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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20