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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20