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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3130 - (show annotations) (download)
Thu Oct 20 06:56:45 2016 UTC (7 years, 6 months ago) by torben
File size: 167197 byte(s)
Fix labeludskrift ved pshop retur
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 or menuPakkeshopRetur1.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 try
2063 PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2064 except on e:exception do
2065 PrintNyLabelInteger := 0;
2066 end;
2067 if (PrintNyLabelInteger = 1) then
2068 begin
2069 PrintNyLabel := True;
2070 end;
2071
2072 end
2073 else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2074 begin
2075
2076
2077
2078
2079 Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2080 if (Kommentar = 'Ok') then
2081 begin
2082 PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2083 PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2084 RuteNummer := PakkeshopLabel.Koreliste + ' -> ' + PakkeshopLabel.PakkeshopTurid;
2085 Stregkode := PakkeshopLabel.Stregkode;
2086
2087 LabelPrint.PrintLabel(PakkeshopLabel.Stregkode);
2088
2089 // LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2090 // chkForstorTilDirekte.Checked := false;
2091
2092 end;
2093
2094
2095 end
2096 else
2097 begin
2098 RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2099 Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2100 Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2101 BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2102 Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2103 if menuDaoDirekte1.Checked then
2104 begin
2105 try
2106 SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2107 except on e:exception do
2108 SmsKode := '';
2109 end;
2110 try
2111 DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2112 except on e:exception do
2113 DBKbane := '';
2114 end;
2115 end;
2116 PrintNyLabel := False;
2117 try
2118 PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2119 except on e:exception do
2120 PrintNyLabelInteger := 0;
2121 end;
2122 PrintNyLabel := False;
2123 if (PrintNyLabelInteger = 1) then
2124 begin
2125 PrintNyLabel := True;
2126 end;
2127 end;
2128
2129
2130 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2131 begin
2132 if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2133 begin
2134 Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2135 //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2136 end;
2137 end
2138 else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2139 begin
2140 Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2141 //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2142 end;
2143 except on e:exception do
2144 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2145 end;
2146 end;
2147
2148
2149 procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2150 var
2151 List1Msg, List1Pakkestorrelse : String;
2152 begin
2153 RuteNummerST.Caption := RuteNummer;
2154 KommentarST.Caption := Kommentar;
2155 KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2156 KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2157 //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2158 BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2159 List1msg := TimeToStr(now) + '; ';
2160 if menuPakkeshop1.Checked then
2161 List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2162 List1Pakkestorrelse := '';
2163 if radioStorPakke.Checked then
2164 begin
2165 List1Pakkestorrelse := 'Stor pakke';
2166 end;
2167 if radioLillePakke.Checked then
2168 begin
2169 List1Pakkestorrelse := 'Lille pakke';
2170 end;
2171 List1msg := List1msg + BoghandlerNavn + '; ';
2172 if menuNatxpressReturDAO1.Checked then
2173 begin
2174 List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2175 end;
2176 if menuNatxpressReturfraKunde1.Checked then
2177 begin
2178 List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2179 end;
2180 if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2181 List1msg := List1msg + '; ' + List1Pakkestorrelse;
2182 if length(BoghNr) > 0 then
2183 begin
2184 List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2185 end;
2186 if menuDaoDirekte1.Checked then
2187 begin
2188 List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2189 if (radioStorPakke.Checked) then
2190 begin
2191 List1msg := List1msg + '; Stor pakke';
2192 end;
2193 if (radioLillePakke.Checked) then
2194 begin
2195 List1msg := List1msg + '; Lille pakke';
2196 end;
2197 end;
2198 if menuPakkeshopRetur1.Checked then
2199 begin
2200 List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2201 end;
2202 if menuNatXpress1.Checked then
2203 begin
2204 if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2205 or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2206 or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2207 begin
2208 List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2209 end
2210 else
2211 begin
2212 List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2213 end;
2214 end;
2215 if menuIndlevering.Checked then
2216 begin
2217 List1Msg := Stregkode;
2218 end;
2219
2220
2221 ListBox1.Items.Insert(0,List1Msg);
2222 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2223 SkrivScanningLogFil(logTekst);
2224 end;
2225
2226 procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2227 begin
2228 UploadLogfilTilDAO();
2229 UploadInifilTilDAO();
2230 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2231 end;
2232
2233 procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2234 var
2235 ClickedOK: Boolean;
2236 pakkeErScannet : Integer;
2237 pakkeForkertSted : Integer;
2238 List1Msg : String;
2239 kontrolKoreliste : string;
2240 nytRuteNummer, nyFarve : String;
2241 begin
2242 // if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2243 // begin
2244 // LabelPrint.PrintLabel( Stregkode );
2245 // end;
2246 //
2247 // exit;
2248
2249 if menuDaoDirekte1.Checked then
2250 RuteNummerST.Color := TUtils.HexToTColor(Farve);
2251
2252 pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2253 if pakkeErScannet = 0 then
2254 begin
2255 pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2256 end;
2257 if pakkeErScannet = 0 then
2258 begin
2259 pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2260 end;
2261 pakkeForkertSted := pos('burde være hos', Kommentar);
2262
2263
2264 if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2265
2266 begin
2267 if (RuteNummer = 'Ukendt') then
2268 begin
2269 repeat
2270 begin
2271 ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2272 end
2273 until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2274 if not ClickedOK then
2275 begin
2276 exit;
2277 end;
2278 if (Length(BoghandlerNummer) > 2) then
2279 begin
2280 InitScreen();
2281 HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2282 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2283 end;
2284 end;
2285 end
2286 else
2287 if menuDaoDirekte1.Checked then
2288 begin
2289 if (BoghandlerNavn = 'Ukendt pakke') then
2290 begin
2291 PrintNyLabel := false;
2292
2293 PlaySound(PWideChar(Config.AlarmLyd));
2294 MainForm.Color := clRed;
2295 btnNulstil.Visible := true;
2296
2297 end
2298 else
2299 begin
2300 nytRuteNummer := retRutenummer(RuteNummer);
2301 if (nytRuteNummer <> RuteNummer) then
2302 begin
2303 PrintNyLabel := true;
2304 RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2305 nyFarve := Farve;
2306 RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2307 List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2308 RuteNummer := nytRuteNummer;
2309 ListBox1.Items.Insert(0,List1Msg);
2310 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2311 SkrivScanningLogFil(logTekst);
2312
2313 // if (Config.PrinterNavn = 'Ingen') then
2314 // begin
2315 // PrintNyLabel := false;
2316 // end;
2317
2318 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2319 begin
2320 PlaySound(PWideChar(Config.AlarmLyd));
2321 MainForm.Color := clRed;
2322 btnNulstil.Visible := true;
2323 end;
2324
2325 end;
2326 kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2327 if (kontrolKoreliste <> RuteNummer) then
2328 begin
2329 PrintNyLabel := true;
2330 List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2331 if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2332 begin
2333 PrintNyLabel := false;
2334 RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2335 end
2336 else
2337 begin
2338 RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2339 end;
2340 ListBox1.Items.Insert(0,List1Msg);
2341 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2342 SkrivScanningLogFil(logTekst);
2343
2344 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2345 begin
2346 PlaySound(PWideChar(Config.AlarmLyd));
2347 MainForm.Color := clRed;
2348 btnNulstil.Visible := true;
2349 end;
2350
2351 end;
2352 end;
2353
2354 end;
2355
2356 if menuDaoDirekte1.Checked then
2357 begin
2358 case BladhusSted of
2359 00 : begin;
2360 // 20150304: start
2361 // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2362 // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2363 // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2364 // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2365 if PrintNyLabel or (RuteNummer = 'Rutenr') then
2366 // 20150304: slut
2367 begin
2368 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2369 LabelPrint.PrintLabel( Stregkode );
2370 end;
2371 end;
2372 01 : begin;
2373 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2374 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2375 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2376 begin
2377 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2378 LabelPrint.PrintLabel( Stregkode );
2379 end;
2380 end;
2381 02 : begin;
2382 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2383 begin
2384 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2385 LabelPrint.PrintLabel( Stregkode );
2386 end;
2387 end;
2388 03 : begin;
2389 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2390 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2391 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2392 begin
2393 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2394 LabelPrint.PrintLabel( Stregkode );
2395 end;
2396 end;
2397 04 : begin;
2398 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2399 begin
2400 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2401 LabelPrint.PrintLabel( Stregkode );
2402 end;
2403 end;
2404 end;
2405 end;
2406
2407 // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2408 if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2409 begin
2410 exit;
2411 end;
2412
2413 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
2414 begin
2415 end
2416 else
2417 begin
2418 if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2419 begin
2420 logTekst := 'Printer label type ';
2421 if (chkAltidPrintLabel.Checked) then
2422 begin
2423 logTekst := logTekst + 'Alle ';
2424 end
2425 else if (PrintNyLabel) then
2426 begin
2427 logTekst := logTekst + 'Rute ';
2428 end
2429 else
2430 begin
2431 logTekst := logTekst + 'Ukendt ';
2432 end;
2433 logTekst := logTekst + ' for '+BoghandlerNavn;
2434 SkrivScanningLogFil(logTekst);
2435
2436 //LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2437 LabelPrint.PrintLabel( Stregkode );
2438
2439 end;
2440 end;
2441
2442 // tilføjet 20161020
2443 if (menuPakkeshop1.Checked OR menuPakkeshopRetur1.Checked) then
2444 begin
2445 if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2446 begin
2447 LabelPrint.PrintLabel( Stregkode );
2448 end;
2449 end;
2450
2451 end;
2452
2453
2454
2455 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2456 begin
2457 menuStorePakker.Checked := true;
2458 radioStorPakke.Checked := true;
2459 end;
2460
2461 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2462 begin
2463 menuSmaaPakker.Checked := true;
2464 radioLillePakke.Checked := true;
2465 end;
2466
2467
2468 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2469 begin
2470 if chkSporgEfterKunde.Checked then
2471 begin
2472 Sprgefterboghandlernummer1.Checked := true;
2473 end
2474 else
2475 begin
2476 Sprgefterboghandlernummer1.Checked := false;
2477 end;
2478 end;
2479
2480
2481 procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject);
2482 begin
2483 if (chkUdenforSpecifikation.Checked = true) then
2484 begin
2485 chkEmballageRepareret.Checked := false;
2486 end;
2487 end;
2488
2489 procedure TMainForm.chkEmballageRepareretClick(Sender: TObject);
2490 begin
2491 if (chkEmballageRepareret.Checked = true) then
2492 begin
2493 chkUdenforSpecifikation.Checked := false;
2494 end;
2495 end;
2496
2497 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2498 begin
2499 if chkAltidPrintLabel.Checked then
2500 begin
2501 Altidprintepakkelabel1.Checked := true;
2502 end
2503 else
2504 begin
2505 Altidprintepakkelabel1.Checked := false;
2506 end;
2507
2508 end;
2509
2510
2511
2512 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2513 begin
2514 if chkScanTjekkode.Checked then
2515 begin
2516 Scanogstjekkoden1.Checked := true;
2517 end
2518 else
2519 begin
2520 Scanogstjekkoden1.Checked := false;
2521 end;
2522 end;
2523
2524 procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2525 begin
2526 Scanningtype := '5';
2527 InitPakkeshoplevering();
2528 NulstilAutomatiskValg();
2529 end;
2530
2531 procedure TMainForm.NulstilAutomatiskValg();
2532 begin
2533 menuAutomatiskvalg1.Checked := false;
2534 PanelValgA.Color := clBtnFace;
2535 PanelValgA.Font.Color := clWindowText;
2536
2537 if (SpecialVersionSted = '01')
2538 or (SpecialVersionSted = '02')
2539 or (SpecialVersionSted = '03')
2540 or (SpecialVersionSted = '04') then
2541 begin
2542 // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2543 PanelValgA.Enabled := false;
2544 PanelValgA.Font.Color := clInactiveCaption;
2545 menuAutomatiskvalg1.Enabled := false;
2546 end;
2547 // 20150317: slut
2548 end;
2549
2550 procedure TMainForm.TjekkerUrls();
2551 const
2552 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2553 var
2554 urlFejl : Integer;
2555 begin
2556 urlFejl := 0;
2557 //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2558 ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2559
2560 try
2561 // Tjekker urls
2562 logTekst := 'Tjekker urls.';
2563 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2564 SkrivScanningLogFil(logTekst);
2565
2566
2567
2568 // Tjekker UrlNormal
2569 if PanelValg1.Enabled = true then
2570 begin
2571 TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2572 end;
2573
2574 // Tjekker UrlReturDAO
2575 if PanelValg2.Enabled = true then
2576 begin
2577 TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2578 end;
2579
2580 // Tjekker UrlReturBoghandler
2581 if PanelValg3.Enabled = true then
2582 begin
2583 TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2584 end;
2585
2586 // Tjekker UrlBudlevering
2587 if PanelValg4.Enabled = true then
2588 begin
2589 TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2590 end;
2591
2592 // Tjekker UrlPakkeshoplevering
2593 if PanelValg5.Enabled = true then
2594 begin
2595 TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2596 end;
2597
2598 // Tjekker UrlReturPakkeshop
2599 if PanelValg6.Enabled = true then
2600 begin
2601 TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2602 end;
2603
2604 // Tjekker UrlManglendeScanninger
2605 if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2606 begin
2607 TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2608 end;
2609
2610 // Tjekker UrlPakkeshopManglendeScanninger
2611 if PanelValg5.Enabled = true then
2612 begin
2613 TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2614 end;
2615
2616 // Tjekker UrlPakkeshopManglendeReturScanninger
2617 if PanelValg6.Enabled = true then
2618 begin
2619 TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2620 end;
2621
2622 // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2623 if PanelValg7.Enabled = true then
2624 begin
2625 TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2626 TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2627 end;
2628
2629 // Tjekker UrlEKLoverforsel
2630 if PanelValg1.Enabled = true then
2631 begin
2632 TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2633 end;
2634
2635
2636 // Tjekker UrlEKLoverforselPakkeshop
2637 if PanelValg5.Enabled = true then
2638 begin
2639 TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2640 end;
2641
2642
2643 // Tjekker UrlFindPakketype
2644 TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2645
2646 // Tjekker UrlSendPrograminfo
2647 TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2648
2649
2650
2651 logTekst := 'urls er ok';
2652 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2653 SkrivScanningLogFil(logTekst);
2654
2655 Except
2656 Config.TjekUrls := '-'; // markerer at der var fejl
2657
2658 end;
2659 end;
2660
2661 procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2662 const
2663 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2664 begin
2665 if TUtils.CheckUrl(Url) then
2666
2667 begin
2668 logTekst := UrlNavn + ' accepteret: ' + Url;
2669 SkrivScanningLogFil(logTekst);
2670 end
2671 else
2672 begin
2673 inc(urlFejl); // Optæller antal fejl
2674 logTekst := UrlNavn + ' svarer ikke: ' + Url;
2675 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2676 if Config.TjekUrls = '1' then
2677 begin
2678 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2679 end;
2680
2681 SkrivScanningLogFil(logTekst);
2682
2683 if Config.TjekUrls = '1' then
2684 begin
2685 ShowMessage(logTekst);
2686 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2687 Application.Terminate;
2688
2689 raise Exception.Create('UrlFejl');
2690
2691 end;
2692 end;
2693
2694 end;
2695
2696
2697
2698 procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2699 var
2700 SR: TSearchRec;
2701 dt: TDateTime;
2702 CreationTime: TFileTime;
2703 dtCreation: TDateTime;
2704 BemTxt : String;
2705 begin
2706 logTekst := 'Logfiler tjekkes for sletning.';
2707 SkrivScanningLogFil(logTekst);
2708 FileList.Insert(0,logTekst);
2709 if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
2710 begin
2711 repeat
2712 if (SR.Attr <> faDirectory) then
2713 begin
2714
2715 dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
2716 CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
2717 dtCreation := TUtils.FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
2718 // Selvom creation date godt kan være forskellig fra modified date,
2719 // skal vi alligevel altid tjekke filens alder ud fra modified date
2720 // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
2721 BemTxt := '';
2722 if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
2723 begin
2724 BemTxt := ' (skal slettes)';
2725 end;
2726 logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
2727 if DaysBetween(dtCreation, dt) > 1 then
2728 begin
2729 logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
2730 end;
2731 FileList.Insert(0,logTekst);
2732 SkrivScanningLogFil(logTekst);
2733 if BemTxt = ' (skal slettes)' then
2734 begin
2735 if DeleteFile(Path + SR.Name) then
2736 begin
2737 logTekst := 'Logfil er slettet.';
2738 FileList.Insert(0,logTekst);
2739 SkrivScanningLogFil(logTekst);
2740 end
2741 else
2742 begin
2743 logTekst := 'Logfil kunne IKKE slettes.';
2744 FileList.Insert(0,logTekst);
2745 SkrivScanningLogFil(logTekst);
2746 end;
2747 end;
2748 end;
2749 until FindNext(SR) <> 0;
2750 FindClose(SR);
2751 end;
2752 end;
2753
2754 procedure TMainForm.btnNulstilClick(Sender: TObject);
2755 begin
2756 PakkeshopStregkode := '';
2757 PakkeshopTjekkode := '';
2758 btnNulstil.Visible := false;
2759 PakkeshopText1.Caption := 'Stregkode';
2760 BoghandlerStregkode := '';
2761 BoghandlerTjekkode := '';
2762 Stregkode := '';
2763 // 20150312: start
2764 if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2765 begin
2766 ShowMessage('Programmet afbrydes...');
2767 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2768 Application.Terminate;
2769 exit;
2770 end;
2771 // 20150312: slut
2772 InitScreen();
2773 // MainForm.Color := HexToTColor(Farve);
2774 if Farve <> '' then
2775 begin
2776 MainForm.Color := TUtils.HexToTColor(Farve);
2777 end;
2778 if (menuDaoDirekte1.Checked) then
2779 begin
2780 InitLillePakke();
2781 end;
2782 PrinterstatusStaticText1.Caption := '';
2783 PrinterstatusStaticText1.Color := MainForm.Color;
2784 end;
2785
2786
2787 procedure TMainForm.PanelValg1Click(Sender: TObject);
2788 begin
2789 Scanningtype := '1';
2790 InitNatxpresslevering();
2791 NulstilAutomatiskValg();
2792 end;
2793
2794 procedure TMainForm.PanelValg2Click(Sender: TObject);
2795 begin
2796 Scanningtype := '2';
2797 InitReturFraDao();
2798 NulstilAutomatiskValg();
2799 end;
2800
2801 procedure TMainForm.PanelValg3Click(Sender: TObject);
2802 begin
2803 Scanningtype := '3';
2804 InitReturFraKunde();
2805 NulstilAutomatiskValg();
2806 end;
2807
2808 procedure TMainForm.PanelValg4Click(Sender: TObject);
2809 begin
2810 Scanningtype := '4';
2811 InitDirektelevering();
2812 NulstilAutomatiskValg();
2813 end;
2814
2815 procedure TMainForm.PanelValg5Click(Sender: TObject);
2816 begin
2817 Scanningtype := '5';
2818 InitPakkeshoplevering();
2819 NulstilAutomatiskValg();
2820 end;
2821
2822 procedure TMainForm.PanelValg6Click(Sender: TObject);
2823 begin
2824 Scanningtype := '6';
2825 InitReturFraPakkeshop();
2826 NulstilAutomatiskValg();
2827 end;
2828
2829
2830 procedure TMainForm.PanelValg7Click(Sender: TObject);
2831 begin
2832 Scanningtype := '7';
2833 InitIndleveringskode();
2834 NulstilAutomatiskValg();
2835
2836 end;
2837
2838 procedure TMainForm.PanelValgAClick(Sender: TObject);
2839 begin
2840 // Skal ikke toggle men bare sætte funktionen on
2841 // Fravælges ved at vælge en scanningstype
2842 menuAutomatiskvalg1.Checked := true;
2843 PanelValgA.Color := clGreen;
2844 PanelValgA.Font.Color := clWhite;
2845
2846
2847
2848 end;
2849
2850 procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2851 begin
2852 Scanningtype := '1';
2853 NulstilAutomatiskValg();
2854 InitNatxpresslevering();
2855 end;
2856
2857 procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
2858 var
2859 RuteNummer : String;
2860 Kommentar : String;
2861 BoghandlerNavn : String;
2862 Koreliste : String;
2863 Falsk : Boolean;
2864 SmsKode : String;
2865 DBKbane : String;
2866 Leveringssted : String;
2867 orgTjekUrls : String;
2868 begin
2869 orgTjekUrls := Config.TjekUrls;
2870 if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2871 begin
2872 TjekkerUrls();
2873 end;
2874 if Config.TjekUrls = '-' then
2875 begin
2876 //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2877 RuteNummer := '';
2878 Kommentar := 'Se log vinduet';
2879 BoghandlerNavn := 'Fejl i forbindelse til server';
2880 Koreliste := '';
2881 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2882 // Her kommer en alarm og rød skærm
2883 PlaySound(PWideChar(Config.AlarmLyd));
2884 MainForm.Color := clRed;
2885 btnNulstil.Visible := true;
2886 end
2887 else
2888 begin
2889 Falsk := False;
2890
2891 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2892 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2893 SmsKode := '999999';
2894 DBKbane := '999';
2895 Leveringssted := 'XXX';
2896
2897
2898 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2899 FocusControl(StregkodeST);
2900 end;
2901 Config.TjekUrls := orgTjekUrls;
2902
2903 end;
2904
2905 procedure TMainForm.Testprinter1Click(Sender: TObject);
2906 var
2907 RuteNummer : String;
2908 Kommentar : String;
2909 BoghandlerNavn : String;
2910 Koreliste : String;
2911 // Falsk : Boolean;
2912 // SmsKode : String;
2913 // DBKbane : String;
2914 // Leveringssted : String;
2915 begin
2916 RuteNummer := 'Rutenr';
2917 Kommentar := '***** Kommentar *****';
2918 BoghandlerNavn := 'Modtagernavn';
2919 // Falsk := False;
2920
2921
2922 if (LabelPrint.GetPrinterCount() = 0) then
2923 begin
2924 ShowMessage('Der er ikke installeret en printer på denne PC.');
2925 end
2926 // else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2927 // begin
2928 // ShowMessage('Der er fravalgt printer i dette program.');
2929 // end
2930 else
2931 begin
2932 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2933 // SmsKode := '999999';
2934 // DBKbane := '999';
2935 // Leveringssted := 'XXX';
2936 // PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2937
2938 LabelPrint.PrintTestLabel();
2939
2940 LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2941
2942 end;
2943 FocusControl(StregkodeST);
2944 end;
2945
2946 procedure TMainForm.Timer1Timer(Sender: TObject);
2947 begin
2948 if (Config.TjekPrinter = '1') then
2949 begin
2950 LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2951 end
2952 else
2953 begin
2954 PrinterstatusStaticText1.Caption := '';
2955 PrinterstatusStaticText1.Color := MainForm.Color;
2956 end;
2957 end;
2958
2959
2960
2961 procedure TMainForm.Om1Click(Sender: TObject);
2962 const
2963 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2964 var
2965 tekst, filversion : String;
2966 begin
2967
2968 filversion := TUtils.Sto_GetFmtFileVersion('');
2969 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2970
2971 tekst := tekst+crlf+crlf;
2972 tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
2973 tekst := tekst+crlf;
2974
2975 if SpecialVersionSted = '' then
2976 begin
2977 tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
2978 end;
2979
2980 if SpecialVersionSted <> '' then
2981 begin
2982 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2983 begin
2984 if Stednavn = '' then
2985 begin
2986 tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
2987 end
2988 else
2989 begin
2990 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2991 end;
2992 end
2993 else
2994 begin
2995 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2996 end;
2997 end;
2998
2999 if (Pos('omdeling.info',Url) = 0) then
3000 begin
3001 tekst := tekst+crlf+crlf;
3002 tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3003 tekst := tekst+crlf+crlf;
3004 tekst := tekst+crlf+crlf+'Url: ' + Url;
3005 end;
3006
3007 MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3008
3009 end;
3010
3011
3012 procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3013 Rect: TRect; State: TOwnerDrawState);
3014 var
3015 ListBox1MaxLinLgd,i : Integer;
3016 myColor: TColor;
3017 myBrush: TBrush;
3018 begin
3019 ListBox1MaxLinLgd := 0;
3020 myBrush := TBrush.Create;
3021 with (Control as TListBox).Canvas do
3022 begin
3023 if not Odd(Index) then
3024 myColor := clWhite
3025 else
3026 myColor := clSilver;
3027
3028 if odSelected in State then
3029 begin
3030 myColor := MainForm.Color;
3031 font.Color := clBlack;
3032 end;
3033
3034 myBrush.Style := bsSolid;
3035 myBrush.Color := myColor;
3036 Windows.FillRect(handle, Rect, myBrush.Handle) ;
3037 Brush.Style := bsClear;
3038 TextOut(Rect.Left, Rect.Top,
3039 (Control as TListBox).Items[Index]) ;
3040 MyBrush.Free;
3041 end;
3042
3043 for i := 0 to (ListBox1.Items.Count - 1) do
3044 if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3045 ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3046 ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3047 end;
3048
3049 procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3050 begin
3051
3052 Application.Terminate;
3053
3054 end;
3055
3056 procedure TMainForm.Manual1Click(Sender: TObject);
3057 var
3058 fileName : string;
3059 begin
3060 fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3061
3062 if FileExists(fileName) then
3063 begin
3064 if TUtils.AdobeReaderExists then
3065 begin
3066 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3067 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3068 end
3069 else
3070 begin
3071 ShowMessage('Acrobat Reader er ikke installeret!');
3072 end;
3073 end
3074 else
3075 begin
3076 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3077 end;
3078 end;
3079
3080 procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3081 var
3082 fileName : string;
3083 begin
3084 fileName := 'Docs\Manual_0.pdf';
3085
3086 if FileExists(fileName) then
3087 begin
3088 if TUtils.AdobeReaderExists then
3089 begin
3090 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3091 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3092 end
3093 else
3094 begin
3095 ShowMessage('Adobe Reader er ikke installeret!');
3096 end;
3097 end
3098 else
3099 begin
3100 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3101 end;
3102 end;
3103
3104 procedure TMainForm.menuIndleveringClick(Sender: TObject);
3105 begin
3106 Scanningtype := '7';
3107 NulstilAutomatiskValg();
3108 InitIndleveringskode();
3109 end;
3110
3111 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3112 begin
3113
3114 if Sprgefterboghandlernummer1.Checked then
3115 begin
3116 chkSporgEfterKunde.Checked := true;
3117 end
3118 else
3119 begin
3120 chkSporgEfterKunde.Checked := false;
3121 end;
3122
3123
3124 end;
3125
3126 procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3127 begin
3128 Scanningtype := '2';
3129 NulstilAutomatiskValg();
3130 InitReturFraDao();
3131 end;
3132
3133 procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3134 begin
3135 Scanningtype := '6';
3136 InitReturFraPakkeshop();
3137 NulstilAutomatiskValg();
3138 end;
3139
3140 procedure TMainForm.InitNatxpresslevering();
3141 begin
3142 menuAutomatiskTjekkodeStyring.Enabled := true;
3143 btnNulstil.Visible := false;
3144 menuNatXpress1.Checked := true;
3145 InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3146 PanelValg1.Color := clGreen;
3147 PanelValg1.Font.Color := clWhite;
3148
3149 chkAltidPrintLabel.Enabled := true;
3150 Altidprintepakkelabel1.Enabled := true;
3151 Altidprintepakkelabel1.Checked := false;
3152 chkAltidPrintLabel.Checked := false;
3153 Sprgefterboghandlernummer1.Checked := false;
3154 chkSporgEfterKunde.Checked := false;
3155 Sprgefterboghandlernummer1.Enabled := true;
3156 menuSmaaPakker.Enabled := false;
3157 menuStorePakker.Enabled := false;
3158 radioStorPakke.Enabled := false;
3159 radioLillePakke.Enabled := false;
3160 ListBox1.Visible := true;
3161 BtnOpdaterListen.Enabled := true;
3162 BtnEKLoverforsel.Enabled := true;
3163 InitLillePakke();
3164 ListBox1.Items.Clear;
3165
3166 chkForstorTilDirekte.Checked := false;
3167 chkForstorTilDirekte.Enabled := false;
3168
3169 if BladhusSted = 0 then
3170 begin
3171 IndlesScanningLogFil();
3172 IndlesManglendeScanningerAntal();
3173 end;
3174 end;
3175
3176 procedure TMainForm.InitReturFraDao();
3177 begin
3178 menuAutomatiskTjekkodeStyring.Enabled := false;
3179 menuNatxpressReturDAO1.Checked := true;
3180 btnNulstil.Visible := false;
3181 InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3182 PanelValg2.Color := clGreen;
3183 PanelValg2.Font.Color := clWhite;
3184
3185 chkAltidPrintLabel.Enabled := false;
3186 Altidprintepakkelabel1.Enabled := false;
3187
3188 Altidprintepakkelabel1.Checked := false;
3189 Sprgefterboghandlernummer1.Checked := false;
3190 chkSporgEfterKunde.Checked := false;
3191 Sprgefterboghandlernummer1.Enabled := false;
3192 menuSmaaPakker.Enabled := true;
3193 menuStorePakker.Enabled := true;
3194 radioStorPakke.Enabled := true;
3195 radioLillePakke.Enabled := true;
3196 ListBox1.Visible := true;
3197 ListBox1.Items.Clear;
3198 ListBox2.Items.Clear;
3199 BtnEKLoverforsel.Enabled := false;
3200
3201 chkForstorTilDirekte.Checked := false;
3202 chkForstorTilDirekte.Enabled := false;
3203
3204 InitLillePakke();
3205 end;
3206
3207 procedure TMainForm.InitReturFraKunde();
3208 begin
3209 menuAutomatiskTjekkodeStyring.Enabled := false;
3210 menuNatxpressReturfraKunde1.Checked := true;
3211 btnNulstil.Visible := false;
3212 InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3213 PanelValg3.Color := clGreen;
3214 PanelValg3.Font.Color := clWhite;
3215
3216 chkAltidPrintLabel.Enabled := false;
3217 Altidprintepakkelabel1.Enabled := false;
3218 Altidprintepakkelabel1.Checked := false;
3219 Sprgefterboghandlernummer1.Checked := false;
3220 chkSporgEfterKunde.Checked := false;
3221 Sprgefterboghandlernummer1.Enabled := false;
3222 menuSmaaPakker.Enabled := true;
3223 menuStorePakker.Enabled := true;
3224 radioStorPakke.Enabled := true;
3225 radioLillePakke.Enabled := true;
3226 ListBox1.Visible := true;
3227 ListBox1.Items.Clear;
3228 ListBox2.Items.Clear;
3229 BtnEKLoverforsel.Enabled := false;
3230
3231 chkForstorTilDirekte.Checked := false;
3232 chkForstorTilDirekte.Enabled := false;
3233
3234 InitLillePakke();
3235 end;
3236
3237 procedure TMainForm.InitDirektelevering();
3238 begin
3239 menuAutomatiskTjekkodeStyring.Enabled := false;
3240 menuDaoDirekte1.Checked := true;
3241 btnNulstil.Visible := false;
3242 InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3243 PanelValg4.Color := clGreen;
3244 PanelValg4.Font.Color := clWhite;
3245
3246 chkAltidPrintLabel.Enabled := false;
3247 Altidprintepakkelabel1.Enabled := false;
3248
3249 Altidprintepakkelabel1.Checked := false;
3250 Sprgefterboghandlernummer1.Checked := false;
3251 chkSporgEfterKunde.Checked := false;
3252 Sprgefterboghandlernummer1.Enabled := false;
3253 menuSmaaPakker.Enabled := true;
3254 menuStorePakker.Enabled := true;
3255 radioStorPakke.Enabled := true;
3256 radioLillePakke.Enabled := true;
3257 ListBox1.Visible := true;
3258 ListBox1.Items.Clear;
3259 BtnDownloadKontrolfil.Enabled := false;
3260 BtnOpdaterListen.Enabled := true;
3261 BtnDownloadRuteskiftFil.Visible := false;
3262 BtnEKLoverforsel.Enabled := false;
3263 IdFTP1.Passive := true;
3264 IdFTP1.PassiveUseControlHost := true;
3265
3266 chkForstorTilDirekte.Checked := false;
3267 chkForstorTilDirekte.Enabled := true;
3268
3269 if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3270 begin
3271 IndlesScanningLogFil();
3272 IndlesManglendeScanningerAntal();
3273 end;
3274
3275 end;
3276
3277 procedure TMainForm.InitPakkeshoplevering();
3278 begin
3279 menuAutomatiskTjekkodeStyring.Enabled := true;
3280 menuPakkeshop1.Checked := true;
3281 btnNulstil.Visible := false;
3282 InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3283 PanelValg5.Color := clGreen;
3284 PanelValg5.Font.Color := clWhite;
3285
3286 chkAltidPrintLabel.Enabled := false;
3287 Altidprintepakkelabel1.Enabled := false;
3288
3289 Altidprintepakkelabel1.Checked := false;
3290 Sprgefterboghandlernummer1.Checked := false;
3291 chkSporgEfterKunde.Checked := false;
3292 Sprgefterboghandlernummer1.Enabled := false;
3293 menuSmaaPakker.Enabled := false;
3294 menuStorePakker.Enabled := false;
3295 radioStorPakke.Enabled := false;
3296 radioLillePakke.Enabled := false;
3297 ListBox1.Visible := true;
3298 ListBox1.Items.Clear;
3299 BtnDownloadKontrolfil.Enabled := false;
3300 BtnOpdaterListen.Enabled := true;
3301
3302 BtnEKLoverforsel.Enabled := true;
3303
3304 chkForstorTilDirekte.Checked := false;
3305 chkForstorTilDirekte.Enabled := true;
3306
3307 InitLillePakke();
3308 IndlesScanningLogFil();
3309 if BladhusSted = 0 then
3310 begin
3311 IndlesManglendeScanningerAntal();
3312 end;
3313 IdFTP1.Passive := true;
3314 IdFTP1.PassiveUseControlHost := true;
3315 end;
3316
3317 procedure TMainForm.InitReturFraPakkeshop();
3318 begin
3319 menuAutomatiskTjekkodeStyring.Enabled := false;
3320 menuPakkeshopRetur1.Checked := true;
3321 btnNulstil.Visible := false;
3322 InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3323 PanelValg6.Color := clGreen;
3324 PanelValg6.Font.Color := clWhite;
3325
3326 chkAltidPrintLabel.Enabled := false;
3327 Altidprintepakkelabel1.Enabled := false;
3328
3329 Altidprintepakkelabel1.Checked := false;
3330 Sprgefterboghandlernummer1.Checked := false;
3331 chkSporgEfterKunde.Checked := false;
3332 Sprgefterboghandlernummer1.Enabled := false;
3333 menuSmaaPakker.Enabled := false;
3334 menuStorePakker.Enabled := false;
3335 radioStorPakke.Enabled := false;
3336 radioLillePakke.Enabled := false;
3337 ListBox1.Visible := true;
3338 ListBox1.Items.Clear;
3339 BtnDownloadKontrolfil.Enabled := false;
3340 BtnOpdaterListen.Enabled := true;
3341 BtnEKLoverforsel.Enabled := false;
3342
3343 chkForstorTilDirekte.Checked := false;
3344 chkForstorTilDirekte.Enabled := false;
3345
3346
3347 InitLillePakke();
3348 IndlesScanningLogFil();
3349 if BladhusSted = 0 then
3350 begin
3351 IndlesManglendeScanningerAntal();
3352 end;
3353 IdFTP1.Passive := true;
3354 IdFTP1.PassiveUseControlHost := true;
3355 end;
3356
3357 procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3358 begin
3359 Scanningtype := '3';
3360 NulstilAutomatiskValg();
3361 InitReturFraKunde();
3362 end;
3363
3364 procedure TMainForm.InitIndleveringskode();
3365 begin
3366 menuIndlevering.Checked := true;
3367 menuAutomatiskTjekkodeStyring.Enabled := false;
3368
3369 btnNulstil.Visible := false;
3370 InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3371 PanelValg7.Color := clGreen;
3372 PanelValg7.Font.Color := clWhite;
3373
3374 chkAltidPrintLabel.Enabled := false;
3375 Altidprintepakkelabel1.Enabled := false;
3376
3377 Altidprintepakkelabel1.Checked := false;
3378 Sprgefterboghandlernummer1.Checked := false;
3379 Sprgefterboghandlernummer1.Enabled := false;
3380 chkSporgEfterKunde.Checked := false;
3381
3382
3383
3384 menuSmaaPakker.Enabled := false;
3385 menuStorePakker.Enabled := false;
3386 radioStorPakke.Enabled := false;
3387 radioLillePakke.Enabled := false;
3388 ListBox1.Visible := true;
3389 ListBox1.Items.Clear();
3390
3391 BtnDownloadKontrolfil.Enabled := false;
3392 BtnOpdaterListen.Enabled := true;
3393 BtnEKLoverforsel.Enabled := false;
3394
3395 chkForstorTilDirekte.Checked := false;
3396 chkForstorTilDirekte.Enabled := false;
3397
3398
3399 InitLillePakke();
3400 IndlesScanningLogFil();
3401 if BladhusSted = 0 then
3402 begin
3403 IndlesManglendeScanningerAntal();
3404 end;
3405 IdFTP1.Passive := true;
3406 IdFTP1.PassiveUseControlHost := true;
3407 end;
3408
3409
3410 procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3411 begin
3412 InitStorPakke();
3413 end;
3414
3415 procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3416 begin
3417 InitLillePakke();
3418 end;
3419
3420 procedure TMainForm.InitLillePakke();
3421 begin
3422 radioLillePakke.Checked := true;
3423 menuSmaaPakker.Checked := true;
3424 // Stregkode := '';
3425 end;
3426
3427 procedure TMainForm.InitStorPakke();
3428 begin
3429 radioStorPakke.Checked := true;
3430 menuStorePakker.Checked := true;
3431 // 20150310: start
3432 // Stregkode := '';
3433 // 20150310: slut
3434 end;
3435
3436
3437
3438 procedure TMainForm.PlaySound(filename : PWideChar);
3439 begin
3440 if (filename <> '') then
3441 begin
3442 sndPlaySound(filename,
3443 SND_NODEFAULT Or SND_ASYNC);
3444 end;
3445 end;
3446
3447 procedure TMainForm.Testlyd1Click(Sender: TObject);
3448 begin
3449 if Config.AlarmLyd <> '' then
3450 begin
3451 PlaySound(PWideChar(Config.AlarmLyd));
3452 end
3453 else
3454 begin
3455 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3456 end;
3457 end;
3458
3459 procedure TMainForm.Testlyd2Click(Sender: TObject);
3460 begin
3461 if (PakkeshopText1.Caption = 'Tjekkode') then
3462 begin
3463 if Config.ScannetOkTilTjekkodeLyd <> '' then
3464 begin
3465 PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3466 end
3467 else
3468 begin
3469 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3470 end;
3471 exit;
3472 end;
3473
3474 if menuSmaaPakker.Checked then
3475 if Config.ScannetOkLyd <> '' then
3476 begin
3477 PlaySound(PWideChar(Config.ScannetOkLyd));
3478 end
3479 else
3480 begin
3481 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3482 end;
3483 if menuStorePakker.Checked then
3484 if Config.ScannetOkStorLyd <> '' then
3485 begin
3486 PlaySound(PWideChar(Config.ScannetOkStorLyd));
3487 end
3488 else
3489 begin
3490 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3491 end;
3492 end;
3493
3494
3495 procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3496 begin
3497 Scanningtype := '4';
3498 NulstilAutomatiskValg();
3499 InitDirektelevering();
3500 end;
3501
3502 procedure TMainForm.Button1Click(Sender: TObject);
3503 begin;
3504 CheckCode();
3505 end;
3506
3507 procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3508 var
3509 WebSvar : String;
3510 URLStr : String;
3511 StedKode : String;
3512 Node: IXMLNode;
3513 I: Integer;
3514 status, kommentar : String;
3515
3516 begin
3517 BtnEKLoverforsel.Enabled := false;
3518
3519 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3520 logTekst := 'Overfører de scannede pakker til EKL';
3521 SkrivScanningLogFil(logTekst);
3522 StedKode := Sted;
3523 URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3524
3525 if PanelValg5.Color = clGreen then
3526 begin
3527 URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3528 end;
3529
3530
3531 try
3532 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3533 WebSvar := IdHTTP1.Get(URLStr);
3534 except
3535 on e:EIdConnClosedGracefully do
3536 begin
3537 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3538 WebSvar := IdHTTP1.Get(URLStr);
3539 end;
3540 on e:exception do
3541 begin
3542 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3543 logTekst := 'Fejl i web forespørgsel: '+e.Message;
3544 SkrivScanningLogFil(logTekst);
3545 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3546 end;
3547 end;
3548 try
3549 XMLDocument1.LoadFromXML(WebSvar);
3550 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3551 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3552 if Node.NodeType = ntElement then begin
3553 if Node.NodeName = 'Status' then begin
3554 if not VarIsNull(Node.NodeValue) then
3555 status := Node.NodeValue;
3556 end;
3557 if Node.NodeName = 'Kommentar' then begin
3558 if not VarIsNull(Node.NodeValue) then
3559 kommentar := Node.NodeValue;
3560 end;
3561 end;
3562 end;
3563
3564 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3565 logTekst := 'Overførsel til EKL: ' + status;
3566 SkrivScanningLogFil(logTekst);
3567
3568 except on e:exception do
3569 begin
3570 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3571 logTekst := 'Overførsel til EKL: ' + status;
3572 SkrivScanningLogFil(logTekst);
3573 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3574 logTekst := 'Fejl i XML-format: '+e.Message;
3575 SkrivScanningLogFil(logTekst);
3576 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
3577 end;
3578 end;
3579
3580 BtnEKLoverforsel.Enabled := true;
3581
3582 ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3583
3584 // Hvis der var fejl i overførslen skal dette fejlmeldes her
3585 if status = 'Fejl' then
3586 begin // Her skal komme en alarm og rød skærm
3587 PlaySound(PWideChar(Config.AlarmLyd));
3588 MainForm.Color := clRed;
3589 RutenummerST.Caption := 'EKL overførsel';
3590 BoghandlerNavnST.Caption := 'Fejl:';
3591 if (pos('Deadlock', Kommentar) > 0) then
3592 begin
3593 RutenummerST.Caption := 'EKL overførsel fejlet';
3594 BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3595 end;
3596 KommentarST.Caption := Kommentar;
3597 btnNulstil.Visible := true;
3598 end;
3599
3600 end;
3601
3602 procedure TMainForm.CheckCode();
3603 var
3604 Barcode, Svar : String;
3605 ClickedOK : Boolean;
3606 begin
3607 ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
3608 if ClickedOk then
3609 begin
3610 { if (BarCodeValid(Barcode)) then
3611 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3612 else
3613 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3614 }
3615 // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
3616 { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
3617 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3618 else
3619 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3620 }
3621 Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3622
3623 MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3624 CheckCode();
3625 end;
3626
3627 end;
3628
3629
3630 //
3631 // Bladhus ***
3632 //
3633 procedure TMainForm.DownloadBladhusRuteskiftfil();
3634 const
3635 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3636
3637 var
3638 filnavn_input : string;
3639 filnavn_output : string;
3640 buttonSelected : Integer;
3641
3642 begin
3643 filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
3644 filnavn_output := BladhusRuteskiftfil_lokal;
3645
3646 case BladhusSted of
3647 00 : begin;
3648 end;
3649 01 : begin;
3650 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3651 if buttonSelected = mrOK then
3652 begin
3653 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3654 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3655 SkrivScanningLogFil(logTekst);
3656 try
3657 try
3658
3659 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3660 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3661 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3662 IdFTP1.Connect;
3663
3664 //IdFTP1.TransferType := ftASCII;
3665 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3666 try
3667 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3668 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3669 except on e:EIdConnClosedGracefully do
3670 begin
3671 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3672 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3673 end;
3674 end;
3675 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3676
3677 ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3678 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3679 SkrivScanningLogFil(logTekst);
3680
3681 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3682 logTekst := 'Ruteskift fil tjekkes.';
3683 SkrivScanningLogFil(logTekst);
3684
3685 finally
3686 IdFTP1.Disconnect;
3687 end;
3688
3689 except on e:exception do
3690 begin
3691 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3692 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3693 SkrivScanningLogFil(logTekst);
3694 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3695 [e.Message
3696 + CrLf + 'Host: '+IdFTP1.host
3697 + CrLf + 'Username: '+IdFTP1.Username
3698 ]
3699 );
3700 end;
3701 end;
3702 end
3703 else
3704 begin
3705 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3706 logTekst := 'Download af ruteskiftfil annulleret';
3707 SkrivScanningLogFil(logTekst);
3708 end;
3709 IndlesRuteskiftFil(filnavn_output);
3710 end;
3711 02 : begin;
3712 end;
3713 03 : begin;
3714 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3715 if buttonSelected = mrOK then
3716 begin
3717 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3718 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3719 SkrivScanningLogFil(logTekst);
3720 try
3721 try
3722
3723 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3724 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3725 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3726 IdFTP1.Connect;
3727
3728 //IdFTP1.TransferType := ftASCII;
3729 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3730 try
3731 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3732 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3733 except on e:EIdConnClosedGracefully do
3734 begin
3735 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3736 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3737 end;
3738 end;
3739 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3740
3741 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3742 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3743 SkrivScanningLogFil(logTekst);
3744
3745 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3746 logTekst := 'Ruteskift fil tjekkes.';
3747 SkrivScanningLogFil(logTekst);
3748
3749 finally
3750 IdFTP1.Disconnect;
3751 end;
3752
3753 except on e:exception do
3754 begin
3755 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3756 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3757 SkrivScanningLogFil(logTekst);
3758 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3759 [e.Message
3760 + CrLf + 'Host: '+IdFTP1.host
3761 + CrLf + 'Username: '+IdFTP1.Username
3762 ]
3763 );
3764 end;
3765 end;
3766 end
3767 else
3768 begin
3769 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3770 logTekst := 'Download af ruteskiftfil annulleret';
3771 SkrivScanningLogFil(logTekst);
3772 end;
3773 IndlesRuteskiftFil(filnavn_output);
3774 end;
3775 04 : begin;
3776 end;
3777 else
3778 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
3779 end;
3780
3781 end;
3782
3783 procedure TMainForm.DownloadBladhusKontrolfil();
3784 const
3785 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3786
3787 var
3788 filnavn_input : string;
3789 filnavn_output : string;
3790 buttonSelected : Integer;
3791
3792 begin
3793 filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
3794 filnavn_output := BladhusKontrolfil_lokal;
3795
3796 case BladhusSted of
3797 01 :
3798 begin;
3799 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3800 if buttonSelected = mrOK then
3801 begin
3802 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3803 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3804 SkrivScanningLogFil(logTekst);
3805 try
3806 try
3807
3808 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3809 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3810 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3811 IdFTP1.Connect;
3812
3813 //IdFTP1.TransferType := ftASCII;
3814 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3815 try
3816 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3817 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3818 except on e:EIdConnClosedGracefully do
3819 begin
3820 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3821 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3822 end;
3823 end;
3824 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3825
3826 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3827 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3828 SkrivScanningLogFil(logTekst);
3829
3830 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3831 logTekst := 'Rute kontrol fil tjekkes.';
3832 SkrivScanningLogFil(logTekst);
3833
3834 finally
3835 IdFTP1.Disconnect;
3836 end;
3837
3838 except on e:exception do
3839 begin
3840 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3841 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3842 SkrivScanningLogFil(logTekst);
3843 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3844 [e.Message
3845 + CrLf + 'Host: '+IdFTP1.host
3846 + CrLf + 'Username: '+IdFTP1.Username
3847 ]
3848 );
3849 end;
3850 end;
3851 end
3852 else
3853 begin
3854 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3855 logTekst := 'Download af kontrolfil annulleret';
3856 SkrivScanningLogFil(logTekst);
3857 end;
3858 IndlesKontrolFil(filnavn_output);
3859 end;
3860 02 : begin;
3861 end;
3862 03 : begin;
3863 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3864 if buttonSelected = mrOK then
3865 begin
3866 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3867 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3868 SkrivScanningLogFil(logTekst);
3869 try
3870 try
3871
3872 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3873 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3874 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3875 IdFTP1.Connect;
3876
3877 //IdFTP1.TransferType := ftASCII;
3878 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3879 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3880
3881 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3882 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3883 SkrivScanningLogFil(logTekst);
3884
3885 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3886 logTekst := 'Rute kontrol fil tjekkes.';
3887 SkrivScanningLogFil(logTekst);
3888
3889 finally
3890 IdFTP1.Disconnect;
3891 end;
3892
3893 except on e:exception do
3894 begin
3895 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3896 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3897 SkrivScanningLogFil(logTekst);
3898 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3899 [e.Message
3900 + CrLf + 'Host: '+IdFTP1.host
3901 + CrLf + 'Username: '+IdFTP1.Username
3902 ]
3903 );
3904 end;
3905 end;
3906 end
3907 else
3908 begin
3909 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3910 logTekst := 'Download af kontrolfil annulleret';
3911 SkrivScanningLogFil(logTekst);
3912 end;
3913 IndlesKontrolFil(filnavn_output);
3914 end;
3915 04 : begin;
3916 end;
3917 else
3918 ShowMessage('Ukendt Bladhus sted ???') ;
3919 end;
3920
3921 end;
3922
3923 procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
3924 const
3925 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3926
3927 var
3928 testsystem : String;
3929
3930 begin
3931 testsystem := '';
3932 if (Pos('omdeling.info',Url) = 0) then
3933 begin
3934 testsystem := 'TEST_';
3935 end;
3936 filnavn_output := testsystem + filnavn_output;
3937
3938 ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
3939 logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
3940 SkrivScanningLogFil(logTekst);
3941 try
3942 try
3943
3944 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3945 IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
3946 IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
3947 IdFTP1.Connect;
3948
3949 //IdFTP1.TransferType := ftASCII;
3950 try
3951 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3952 IdFTP1.ChangeDir('fraScannerprogram');
3953 IdFTP1.Put(filnavn_input, filnavn_output, True);
3954 except on e:EIdConnClosedGracefully do
3955 begin
3956 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3957 IdFTP1.Put(filnavn_input, filnavn_output, True);
3958 end;
3959 end;
3960 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3961
3962 logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
3963 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3964 SkrivScanningLogFil(logTekst);
3965
3966 finally
3967 IdFTP1.Disconnect;
3968 end;
3969
3970 except on e:exception do
3971 begin
3972 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3973 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3974 SkrivScanningLogFil(logTekst);
3975 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3976 [e.Message
3977 + CrLf + 'Host: '+IdFTP1.host
3978 + CrLf + 'Username: '+IdFTP1.Username
3979 ]
3980 );
3981 end;
3982 end;
3983 end;
3984
3985 procedure TMainForm.UploadLogfilTilDAO();
3986 const
3987 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3988
3989 var
3990 idag, imorgen : TDateTime;
3991 imorgenYmd : string;
3992 logFilnavn : string;
3993 filnavn_input : string;
3994 filnavn_output : string;
3995 buttonSelected : Integer;
3996 openDialog : TOpenDialog;
3997
3998 begin
3999 idag := Now;
4000 imorgen := IncDay(idag, 1); //adds 1 day(s)
4001 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4002 if (FormatDateTime('hh:nn',idag) < '12:00') then
4003 begin
4004 imorgen := idag;
4005 end;
4006 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4007 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4008 filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4009 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4010
4011 buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4012 if buttonSelected = mrOK then
4013 begin
4014 SendFilTilDao('Log', filnavn_input, filnavn_output);
4015 end
4016 else
4017 begin
4018 buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4019 if buttonSelected = mrOK then
4020 begin
4021 // Create the open dialog object - assign to our open dialog variable
4022 openDialog := TOpenDialog.Create(self);
4023
4024 // Set up the starting directory to be the current one
4025 openDialog.InitialDir := GetCurrentDir + '\Logs';
4026
4027 // Only allow existing files to be selected
4028 openDialog.Options := [ofFileMustExist];
4029
4030 // Allow only .log files to be selected
4031 openDialog.Filter := 'Log filer|*.log';
4032
4033 // Display the open file dialog
4034 if openDialog.Execute then
4035 begin
4036 filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4037 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4038 SendFilTilDao('Log', filnavn_input, filnavn_output);
4039 end
4040 else
4041 begin
4042 logTekst := 'Upload af log fil annulleret';
4043 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4044 SkrivScanningLogFil(logTekst);
4045 end;
4046
4047 // Free up the dialog
4048 openDialog.Free;
4049 end
4050 else
4051 begin
4052 logTekst := 'Upload af log fil annulleret';
4053 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4054 SkrivScanningLogFil(logTekst);
4055 end;
4056 end;
4057
4058 end;
4059
4060 procedure TMainForm.UploadInifilTilDAO();
4061 const
4062 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4063
4064 var
4065 idag, imorgen : TDateTime;
4066 imorgenYmd : string;
4067 iniFilnavn : string;
4068 filnavn_input : string;
4069 filnavn_output : string;
4070 buttonSelected : Integer;
4071
4072 begin
4073 idag := Now;
4074 imorgen := IncDay(idag, 1); //adds 1 day(s)
4075 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4076 if (FormatDateTime('hh:nn',idag) < '12:00') then
4077 begin
4078 imorgen := idag;
4079 end;
4080 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4081 iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4082 filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4083 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4084
4085 buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4086 if buttonSelected = mrOK then
4087 begin
4088 SendFilTilDao('Ini', filnavn_input, filnavn_output);
4089 end
4090 else
4091 begin
4092 logTekst := 'Upload af ini fil annulleret';
4093 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4094 SkrivScanningLogFil(logTekst);
4095 end;
4096
4097 end;
4098
4099 procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4100 begin
4101 UploadLogfilTilDAO();
4102 UploadInifilTilDAO();
4103 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4104 end;
4105
4106 procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4107 begin
4108 DownloadBladhusKontrolfil();
4109 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4110 end;
4111
4112 procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4113 const
4114 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4115
4116 begin
4117 IndlesManglendeScanningerListe();
4118 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4119 end;
4120
4121 procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4122 begin
4123 if (getProddag() = 'lørdag') then
4124 begin
4125 DownloadBladhusRuteskiftfil();
4126 end;
4127 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4128 end;
4129
4130
4131 procedure TMainForm.IndlesManglendeScanningerAntal();
4132 var
4133 Node: IXMLNode;
4134
4135 URLStr : String;
4136 StedKode : String;
4137 WebSvar : String;
4138
4139 i : Integer;
4140
4141 PakkeType : String;
4142 TotalAntal : String;
4143 AntalProdDato : String;
4144
4145 CurrentPanel : TPanel;
4146
4147 begin
4148 ListBox2.Clear();
4149
4150 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4151 begin
4152 StedKode := BladhusStedKode[BladhusSted];
4153 end
4154 else
4155 begin
4156 StedKode := Sted;
4157 end;
4158
4159 URLStr := Format(Config.UrlHentPakkeAntal, [StedKode]);
4160
4161
4162 try
4163 WebSvar := IdHTTP1.Get(URLStr);
4164 except
4165 on e:EIdConnClosedGracefully do
4166 begin
4167 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4168 WebSvar := IdHTTP1.Get(URLStr);
4169 end;
4170 on e:exception do
4171 begin
4172 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4173 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4174 SkrivScanningLogFil(logTekst);
4175 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4176 end;
4177 end;
4178
4179
4180
4181 try
4182
4183 XMLDocument1.LoadFromXML(WebSvar);
4184
4185 for i:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4186 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4187
4188 PakkeType := Node.ChildValues['PakkeType'];
4189 TotalAntal := Node.ChildValues['TotalAntal'];
4190 AntalProdDato := Node.ChildValues['AntalProdDato'];
4191
4192
4193 CurrentPanel := nil;
4194
4195 if (PakkeType = 'natxpress') then
4196 begin
4197 CurrentPanel := PanelManglendePakker1;
4198 end;
4199
4200 if (PakkeType = 'daodirekte') then
4201 begin
4202 CurrentPanel := PanelManglendePakker4;
4203 end;
4204
4205 if (PakkeType = 'pakkeshop') then
4206 begin
4207 CurrentPanel := PanelManglendePakker5;
4208 end;
4209
4210 if (CurrentPanel <> nil) then
4211 begin
4212 CurrentPanel.Caption := TotalAntal;
4213 if ( StrToInt(TotalAntal) > 0) then
4214 begin
4215 CurrentPanel.Visible := true;
4216 end
4217 else
4218 begin
4219 CurrentPanel.Visible := false;
4220 end;
4221 end;
4222
4223
4224 end;
4225
4226
4227 except on e:exception do
4228 begin
4229 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4230 logTekst := 'Fejl i XML-format: '+e.Message;
4231 SkrivScanningLogFil(logTekst);
4232 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4233 end;
4234 end;
4235
4236
4237
4238 ListBox1.Items.Insert(0,'Pakkeantal indlæst - klar til scanning');
4239
4240 end;
4241
4242 procedure TMainForm.IndlesManglendeScanningerListe();
4243 var
4244 WebSvar : String;
4245 URLStr : String;
4246 StedKode : String;
4247 Node: IXMLNode;
4248 I: Integer;
4249 stregkode, modtagernavn, modtageradresse, kommentar : string;
4250 pakketype, tjekkodestatus : String;
4251 antalLiniefelter, antalFelterFundet, linienr : Integer;
4252 //pakketyper : TStrings;
4253 pakketyper : TDictionary<String, Integer>;
4254 tmpAntal : Integer;
4255
4256 time, timeSamlet : TTimingHelper;
4257
4258
4259 antlin : Integer;
4260
4261 antlinIdag, antlinSenere : Integer;
4262
4263 //XmlFelter : TStrings;
4264 XmlFelter : TDictionary<String, Integer>;
4265
4266 begin
4267
4268
4269 XmlFelter := TDictionary<String, Integer>.Create;
4270 pakketyper := TDictionary<String, Integer>.Create;
4271
4272 linienr := 0;
4273 ListBox2.Clear;
4274 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4275 logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4276 SkrivScanningLogFil(logTekst);
4277 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4278 begin
4279 StedKode := BladhusStedKode[BladhusSted];
4280 end
4281 else
4282 begin
4283 StedKode := Sted;
4284 end;
4285
4286 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4287
4288
4289
4290 if (Scanningtype = '7') then
4291 begin
4292 URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4293 end
4294 else if (Scanningtype = '6') then
4295 begin
4296 URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4297 end
4298 else if (Scanningtype = '5') then
4299 begin
4300 URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4301 end
4302 else if (Scanningtype = '1') then
4303 begin
4304 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4305 end
4306 else if (Scanningtype = '4') then
4307 begin
4308 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4309 end
4310 else
4311 begin
4312 exit;
4313 end;
4314 // 20150310: slut
4315
4316 time := TTimingHelper.create(); //DEBUG
4317 timeSamlet := TTimingHelper.create(); //DEBUG
4318
4319 try
4320 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4321 // URLStr := string(Utf8Encode(URLStr));
4322 WebSvar := IdHTTP1.Get(URLStr);
4323 except
4324 on e:EIdConnClosedGracefully do
4325 begin
4326 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4327 WebSvar := IdHTTP1.Get(URLStr);
4328
4329
4330
4331 end;
4332 on e:exception do
4333 begin
4334 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4335 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4336 SkrivScanningLogFil(logTekst);
4337 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4338 end;
4339 end;
4340 try
4341 time.stop('HTTP Load'); //DEBUG
4342
4343 XMLDocument1.LoadFromXML(WebSvar);
4344
4345 time.stop('XML Load'); //DEBUG
4346
4347
4348
4349
4350
4351
4352 antlin := 0;
4353 antlinIdag := 0;
4354 antlinSenere := 0;
4355
4356 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4357 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4358 if Node.NodeType = ntElement then begin
4359 if Node.NodeName = 'Stregkode' then
4360 begin
4361 Inc(antlin);
4362 // 20150306: start
4363 if not VarIsNull(Node.NodeValue) then
4364 begin
4365 if (pos('(', Node.NodeValue) = 0) then
4366 begin
4367 Inc(antlinIdag);
4368 end
4369 else
4370 begin
4371 Inc(antlinSenere);
4372 end;
4373 end;
4374 // 20150306: slut
4375 end;
4376 end;
4377 if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4378 begin
4379 XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4380 XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4381 end
4382 else
4383 begin
4384 XmlFelter.Add(Node.NodeName, 1);
4385 end;
4386
4387 end;
4388 antalLiniefelter := XmlFelter.Count;
4389 antalFelterFundet := 0;
4390 SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4391 SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4392
4393 time.stop('Antal Linier');//DEBUG
4394
4395 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4396
4397 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4398 if (antlinSenere > 0) then
4399 begin
4400 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4401 end;
4402 logTekst := logTekst + '.';
4403
4404 SkrivScanningLogFil(logTekst);
4405 time.stop('Antal Linier2');//DEBUG
4406
4407
4408 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4409 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4410 if Node.NodeType = ntElement then begin
4411 if Node.NodeName = 'Stregkode' then begin
4412 if not VarIsNull(Node.NodeValue) then
4413 stregkode := Node.NodeValue;
4414 antalFelterFundet := antalFelterFundet + 1;
4415 end
4416 else if Node.NodeName = 'ModtagerNavn' then begin
4417 if not VarIsNull(Node.NodeValue) then
4418 modtagernavn := Node.NodeValue;
4419 antalFelterFundet := antalFelterFundet + 1;
4420 end
4421 else if Node.NodeName = 'ModtagerAdresse' then begin
4422 if not VarIsNull(Node.NodeValue) then
4423 modtageradresse := Node.NodeValue;
4424 antalFelterFundet := antalFelterFundet + 1;
4425 end
4426 else if Node.NodeName = 'Kommentar' then begin
4427 if not VarIsNull(Node.NodeValue) then
4428 kommentar := Node.NodeValue;
4429 antalFelterFundet := antalFelterFundet + 1;
4430 end
4431 else if Node.NodeName = 'PakkeType' then begin
4432 if not VarIsNull(Node.NodeValue) then
4433 pakketype := Node.NodeValue;
4434 antalFelterFundet := antalFelterFundet + 1;
4435 if ( pakketyper.ContainsKey(pakketype) ) then
4436 begin
4437 pakketyper.TryGetValue(pakketype, tmpAntal);
4438 pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4439 end
4440 else
4441 pakketyper.Add(pakketype, 1);
4442 end
4443 else if Node.NodeName = 'TjekkodeStatus' then begin
4444 if not VarIsNull(Node.NodeValue) then
4445 tjekkodestatus := Node.NodeValue;
4446 antalFelterFundet := antalFelterFundet + 1;
4447 if (tjekkodestatus = '-1') then
4448 begin
4449
4450 if (pos(' ', stregkode) > 0) then
4451 begin
4452 stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4453 end
4454 else
4455 begin
4456 stregkoderMedTjekkodeArray[linienr] := stregkode;
4457 end;
4458 linienr := linienr + 1;
4459 end;
4460 end;
4461
4462
4463 if antalFelterFundet = antalLiniefelter then
4464 begin
4465 if (ScanningType = '1') then
4466 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4467 else if (ScanningType = '4') then
4468 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4469 else if (ScanningType = '5') then
4470 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4471 else
4472 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4473 antalFelterFundet := 0;
4474 tjekkodestatus := '';
4475 end;
4476 end;
4477 end;
4478
4479
4480 time.stop('Fyld Listbox2');//DEBUG
4481
4482
4483 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4484
4485
4486 for pakketype in pakketyper.Keys do
4487 begin
4488 pakketyper.TryGetValue(pakketype, tmpAntal);
4489 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4490 end;
4491
4492 // Free up the dictionary object
4493 pakketyper.Free;
4494
4495
4496
4497 // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4498 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4499 if (antlinSenere > 0) then
4500 begin
4501 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4502 end;
4503 logTekst := logTekst + '.';
4504 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4505 if (antlinSenere > 0) then
4506 begin
4507 StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4508 end
4509 else
4510 begin
4511 StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4512 end;
4513
4514 if (Scanningtype = '1') then
4515 begin
4516 //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4517 PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4518 if (antlinIdag + antlinSenere > 0) then
4519 begin
4520 PanelManglendePakker1.Visible := true;
4521 end
4522 else
4523 begin
4524 PanelManglendePakker1.Visible := false;
4525 end;
4526 end;
4527
4528 if (Scanningtype = '2') then
4529 begin
4530 PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4531 if (antlinIdag + antlinSenere > 0) then
4532 begin
4533 PanelManglendePakker2.Visible := true;
4534 end
4535 else
4536 begin
4537 PanelManglendePakker2.Visible := false;
4538 end;
4539 end;
4540
4541 if (Scanningtype = '3') then
4542 begin
4543 PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4544 if (antlinIdag + antlinSenere > 0) then
4545 begin
4546 PanelManglendePakker3.Visible := true;
4547 end
4548 else
4549 begin
4550 PanelManglendePakker3.Visible := false;
4551 end;
4552 end;
4553
4554 if (Scanningtype = '4') then
4555 begin
4556 PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4557 if (antlinIdag + antlinSenere > 0) then
4558 begin
4559 PanelManglendePakker4.Visible := true;
4560 end
4561 else
4562 begin
4563 PanelManglendePakker4.Visible := false;
4564 end;
4565 end;
4566
4567 if (Scanningtype = '5') then
4568 begin
4569 PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4570 if (antlinIdag + antlinSenere > 0) then
4571 begin
4572 PanelManglendePakker5.Visible := true;
4573 end
4574 else
4575 begin
4576 PanelManglendePakker5.Visible := false;
4577 end;
4578 end;
4579
4580 if (Scanningtype = '6') then
4581 begin
4582 PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4583 if (antlinIdag + antlinSenere > 0) then
4584 begin
4585 PanelManglendePakker6.Visible := true;
4586 end
4587 else
4588 begin
4589 PanelManglendePakker6.Visible := false;
4590 end;
4591 end;
4592
4593 except on e:exception do
4594 begin
4595 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4596 logTekst := 'Fejl i XML-format: '+e.Message;
4597 SkrivScanningLogFil(logTekst);
4598 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4599 end;
4600 end;
4601
4602 time.stop('Done');//DEBUG
4603 timeSamlet.stop('SamletTid');//DEBUG
4604
4605
4606 end;
4607
4608 procedure TMainForm.IndlesScanningLogFil();
4609 var
4610 SomeTxtFile : TextFile;
4611 buffer : string;
4612 S: string;
4613 idag, imorgen : TDateTime;
4614 imorgenYmd : string;
4615 logFilnavn : string;
4616
4617 begin
4618 idag := Now;
4619 imorgen := IncDay(idag, 1); //adds 1 day(s)
4620 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4621 if (FormatDateTime('hh:nn',idag) < '12:00') then
4622 begin
4623 imorgen := idag;
4624 end;
4625 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4626 logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4627 if FileExists(logFilnavn) then
4628 begin
4629 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4630 logTekst := logFilnavn+' indlæses.';
4631 SkrivScanningLogFil(logTekst);
4632 AssignFile(SomeTxtFile, logFilnavn);
4633 try
4634 Reset(SomeTxtFile);
4635 while not EOF(SomeTxtFile) do
4636 begin
4637 ReadLn(SomeTxtFile, buffer) ;
4638 S := buffer;
4639 ListBox1.Items.Insert(0, S);
4640 end;
4641 finally
4642 CloseFile(SomeTxtFile);
4643 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4644 ListBox1.Items.Insert(0,'');
4645 ListBox1.Items.Insert(0,'');
4646 ListBox1.Items.Insert(0,'');
4647 ListBox1.Items.Insert(0,'');
4648 ListBox1.Items.Insert(0,'');
4649 ListBox1.Items.Insert(0,'');
4650 end;
4651 end;
4652 end;
4653
4654 procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4655 var
4656 SomeTxtFile : TextFile;
4657 idag, imorgen : TDateTime;
4658 imorgenYmd : string;
4659 logFilnavn : string;
4660 //error : Integer;
4661
4662 begin
4663 if (SkrivLog = '1') then
4664 begin
4665 idag := Now;
4666 imorgen := IncDay(idag, 1); //adds 1 day(s)
4667 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4668 if (FormatDateTime('hh:nn',idag) < '12:00') then
4669 begin
4670 imorgen := idag;
4671 end;
4672 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4673 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4674 // Get the current directory
4675 // dir := GetCurrentDir;
4676 // ShowMessage('Current directory = '+dir);
4677 // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
4678 // ShowMessage('logFilnavn = '+logFilnavn);
4679
4680 if not DirectoryExists('Logs') then
4681 begin
4682 CreateDir('Logs');
4683 end;
4684
4685 AssignFile(SomeTxtFile, logFilnavn);
4686 if FileExists(logFilnavn) then
4687 begin
4688 try
4689 try
4690 Append(SomeTxtFile);
4691 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4692 except on e:exception do
4693 //ShowMessageFmt('File create failed with error %d',[error]);
4694 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
4695 end;
4696 finally
4697 CloseFile(SomeTxtFile);
4698 end;
4699 end
4700 else
4701 begin
4702 try
4703 try
4704 ReWrite(SomeTxtFile);
4705 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4706 except on e:exception do
4707 // ShowMessageFmt('File create failed with error %d',[error]);
4708 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
4709 end;
4710 finally
4711 CloseFile(SomeTxtFile);
4712 end;
4713 end;
4714 end;
4715 end;
4716
4717 procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
4718 var
4719 SomeTxtFile : TextFile;
4720 buffer : string;
4721 linnr : integer;
4722 S: string;
4723 A: TStrArray;
4724 idag, imorgen : TDateTime;
4725 imorgenYmd : string;
4726
4727 begin
4728 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4729 logTekst := filnavn+' indlæses.';
4730 SkrivScanningLogFil(logTekst);
4731 SetLength(ruteHverdagArray, 1);
4732 SetLength(ruteLordagArray, 1);
4733 idag := Now;
4734 imorgen := IncDay(idag, 1); //adds 1 day(s)
4735 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4736 if (FormatDateTime('hh:nn',idag) < '12:00') then
4737 begin
4738 imorgen := idag;
4739 end;
4740 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4741 if FileExists(filnavn) then
4742 begin
4743 AssignFile(SomeTxtFile, filnavn);
4744 linnr := 0;
4745 try
4746 Reset(SomeTxtFile);
4747 while not EOF(SomeTxtFile) do
4748 begin
4749 ReadLn(SomeTxtFile, buffer) ;
4750 S := buffer;
4751 SetLength(A,0);
4752 TUtils.Explode(A, ';', S);
4753 if (length(A) < 2) then
4754 begin
4755 TUtils.Explode(A, ',', S);
4756 end;
4757 if (length(A) > 1) then
4758 begin
4759 SetLength(ruteHverdagArray, linnr+1);
4760 SetLength(ruteLordagArray, linnr+1);
4761 ruteHverdagArray[linnr] := A[0];
4762 ruteLordagArray[linnr] := A[1];
4763 linnr := linnr+1;
4764 end;
4765 end;
4766 finally
4767 //ShowMessage(IntToStr(length(A)));
4768 CloseFile(SomeTxtFile);
4769 //ShowMessage(IntToStr(length(ruteHverdagArray)));
4770 if (linnr > 0) then
4771 begin
4772 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4773 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4774 SkrivScanningLogFil(logTekst);
4775 end
4776 else
4777 begin
4778 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4779 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4780 SkrivScanningLogFil(logTekst);
4781 PlaySound(PWideChar(Config.AlarmLyd));
4782 end;
4783 end;
4784 end
4785 else
4786 begin
4787 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4788 logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4789 SkrivScanningLogFil(logTekst);
4790 PlaySound(PWideChar(Config.AlarmLyd));
4791 end;
4792 end;
4793
4794 procedure TMainForm.IndlesKontrolFil(var filnavn : string);
4795 var
4796 SomeTxtFile : TextFile;
4797 buffer : string;
4798 linnr : integer;
4799 S: string;
4800 A: TStrArray;
4801 idag, imorgen : TDateTime;
4802 imorgenYmd : string;
4803
4804 begin
4805 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4806 logTekst := filnavn+' indlæses.';
4807 SkrivScanningLogFil(logTekst);
4808 SetLength(ruteArray, 1);
4809 SetLength(korelisteArray, 1);
4810 idag := Now;
4811 imorgen := IncDay(idag, 1); //adds 1 day(s)
4812 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4813 if (FormatDateTime('hh:nn',idag) < '12:00') then
4814 begin
4815 imorgen := idag;
4816 end;
4817 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4818 if FileExists(filnavn) then
4819 begin
4820 AssignFile(SomeTxtFile, filnavn);
4821 linnr := 0;
4822 try
4823 Reset(SomeTxtFile);
4824 while not EOF(SomeTxtFile) do
4825 begin
4826 ReadLn(SomeTxtFile, buffer) ;
4827 S := buffer;
4828 SetLength(A,0);
4829 TUtils.Explode(A, ';', S);
4830 if (length(A) < 3) then
4831 begin
4832 TUtils.Explode(A, ',', S);
4833 end;
4834 if (A[0]=imorgenYmd) then
4835 begin
4836 if (length(A) > 2) then
4837 begin
4838 SetLength(ruteArray, linnr+1);
4839 SetLength(korelisteArray, linnr+1);
4840 ruteArray[linnr] := A[1];
4841 korelisteArray[linnr] := A[2];
4842 linnr := linnr+1;
4843 end;
4844 end;
4845 end;
4846 finally
4847 //ShowMessage(IntToStr(length(A)));
4848 CloseFile(SomeTxtFile);
4849 //ShowMessage(IntToStr(length(ruteArray)));
4850 if (linnr > 0) then
4851 begin
4852 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4853 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4854 SkrivScanningLogFil(logTekst);
4855 end
4856 else
4857 begin
4858 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4859 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4860 SkrivScanningLogFil(logTekst);
4861 PlaySound(PWideChar(Config.AlarmLyd));
4862 end;
4863 end;
4864 end
4865 else
4866 begin
4867 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4868 logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4869 SkrivScanningLogFil(logTekst);
4870 PlaySound(PWideChar(Config.AlarmLyd));
4871 end;
4872 end;
4873
4874 //
4875 // Bladhus ***
4876 //
4877 function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
4878 var
4879 i : Integer;
4880 svar : String;
4881
4882 begin
4883 //ShowMessage('Køreliste 1: '+korelisteArray[0]);
4884 // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
4885 // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
4886 //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
4887
4888 svar := 'Køreliste ikke i kontrolfil';
4889 case BladhusSted of
4890 01 :
4891 begin;
4892 for i := 0 to length(ruteArray)-1 do
4893 begin
4894 if (Koreliste=ruteArray[i]) then
4895 begin
4896 svar := korelisteArray[i]; // returnerer den forventede køreliste
4897 end;
4898 end;
4899 end;
4900 // 02 : begin;
4901 //ShowMessage('02') ;
4902 // end;
4903 03 : begin;
4904 for i := 0 to length(ruteArray)-1 do
4905 begin
4906 if (Koreliste=ruteArray[i]) then
4907 begin
4908 svar := korelisteArray[i]; // returnerer den forventede køreliste
4909 end;
4910 end;
4911 end;
4912 // 04 : begin;
4913 //ShowMessage('04') ;
4914 // end;
4915 else
4916 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4917 end;
4918 if (RuteNummer = 'Rutenr') then // fra printertest funktionen
4919 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4920
4921 result := svar;
4922 end;
4923
4924 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4925 begin
4926 //ShowMessage('Ændring ikke tilladt');
4927 // Her skal komme en 'rød skærm' alarm
4928 PlaySound(PWideChar(Config.AlarmLyd));
4929 MainForm.Color := clRed;
4930
4931
4932 RuteNummerST.Caption := '';
4933 BoghandlerNavnST.Caption := '';
4934 btnNulstil.Visible := true;
4935
4936 if (strMessage <> '') then
4937 begin
4938 ListBox1.Items.Insert(0, strMessage);
4939 KommentarST.Caption := strMessage;
4940 end;
4941
4942 Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4943
4944 end;
4945
4946 function TMainForm.getProddato() : TDate;
4947 var
4948 idag, imorgen : TDateTime;
4949 imorgenYmd : string;
4950
4951 begin
4952 idag := Now;
4953 imorgen := IncDay(idag, 1); //adds 1 day(s)
4954 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4955 if (FormatDateTime('hh:nn',idag) < '12:00') then
4956 begin
4957 imorgen := idag;
4958 end;
4959 imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
4960 result := StrToDateTime(imorgenYmd);
4961 end;
4962
4963 function TMainForm.getProddag() : String;
4964 begin
4965 // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4966 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4967 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
4968 end;
4969
4970 function TMainForm.retRutenummer(rutenummer : String) : String;
4971 var
4972 i : Integer;
4973 svar : String;
4974
4975 begin
4976 svar := rutenummer;
4977 case BladhusSted of
4978 01 :
4979 begin;
4980 //ShowMessage('01') ;
4981 end;
4982 // 02 : begin;
4983 //ShowMessage('02') ;
4984 // end;
4985 03 : begin;
4986 for i := 0 to length(ruteHverdagArray)-1 do
4987 begin
4988 if (rutenummer=ruteHverdagArray[i]) then
4989 begin
4990 svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
4991 end;
4992 end;
4993 end;
4994 // 04 : begin;
4995 //ShowMessage('04') ;
4996 // end;
4997 else
4998 svar := rutenummer; // Dette svarer til at rute ikke skal ændres
4999 end;
5000 result := svar;
5001 end;
5002
5003
5004 procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5005 begin
5006 if Scanogstjekkoden1.Checked then
5007 begin
5008 chkScanTjekkode.Checked := true;
5009 end
5010 else
5011 begin
5012 chkScanTjekkode.Checked := false;
5013 end;
5014 end;
5015
5016
5017 //Nedarvet fra IParentForm
5018 procedure TMainForm.Msg( msg : string);
5019 begin
5020 ShowMessage(msg);
5021 end;
5022
5023 //Nedarvet fra IParentForm
5024 procedure TMainForm.LogMessage( msg : string);
5025 begin
5026 ListBox1.Items.Insert(0, msg);
5027 SkrivScanningLogFil(msg);
5028 end;
5029
5030
5031 //Nedarvet fra IParentForm
5032 procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
5033 begin
5034
5035 PrinterstatusStaticText1.Caption := txt;
5036 if (alert) then
5037 begin
5038 PrinterstatusStaticText1.Font.Color := clBlack;
5039 PrinterstatusStaticText1.Color := MainForm.Color;
5040 PrinterstatusStaticText1.Transparent := True;
5041 end
5042 else
5043 begin
5044 PrinterstatusStaticText1.Font.Color := clRed;
5045 PrinterstatusStaticText1.Color := clWhite;
5046 PrinterstatusStaticText1.Transparent := true;
5047 end;
5048 end;
5049
5050 //Nedarvet fra IParentForm
5051 function TMainForm.GetFormObject() : TForm;
5052 begin
5053 Result := self;
5054 end;
5055
5056 //Nedarvet fra IParentForm
5057 function TMainForm.GetXMLDocument() : TXMLDocument;
5058 begin
5059 Result := XMLDocument1
5060 end;
5061
5062
5063 end.
5064

  ViewVC Help
Powered by ViewVC 1.1.20