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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20