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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20