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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20