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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20