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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20