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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20