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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2653 - (show annotations) (download)
Sun Aug 23 10:44:23 2015 UTC (8 years, 8 months ago) by torben
File size: 203632 byte(s)
Rename CheckBox1 til chkSporgEfterKunde
1 unit Main;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,
8 IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
9 Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
10 IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,
11 Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet
12 ;
13
14 type
15 TStrArray = array of string;
16 TMainForm = class(TForm)
17 StregkodeST: TStaticText;
18 RuteNummerST: TStaticText;
19 BoghandlerNavnST: TStaticText;
20 IdHTTP1: TIdHTTP;
21 XMLDocument1: TXMLDocument;
22 ApplicationEvents1: TApplicationEvents;
23 chkSporgEfterKunde: TCheckBox;
24 KommentarST: TStaticText;
25 MainMenu1: TMainMenu;
26 N1: TMenuItem;
27 Pakkernormal1: TMenuItem;
28 ReturpakkerfraDAO1: TMenuItem;
29 Returpakkerfraboghandler1: TMenuItem;
30 Hjlp1: TMenuItem;
31 Om1: TMenuItem;
32 Testforbindelsen1: TMenuItem;
33 Testprinter1: TMenuItem;
34 Afslut1: TMenuItem;
35 Sprgefterboghandlernummer1: TMenuItem;
36 Lukprogrammet1: TMenuItem;
37 N2: TMenuItem;
38 N3: TMenuItem;
39 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 chkAltidPrintLabel: 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 chkSporgEfterKundeClick(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 chkAltidPrintLabelClick(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 chkAltidPrintLabel.Checked := true;
476 end
477 else
478 begin
479 chkAltidPrintLabel.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 chkSporgEfterKunde.Checked := true;
715 Sprgefterboghandlernummer1.Checked := true;
716 end
717 else
718 begin
719 chkSporgEfterKunde.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 chkSporgEfterKunde.Enabled = true then
1298 begin
1299 if (chkSporgEfterKunde.State = cbChecked) then
1300 begin
1301 chkSporgEfterKunde.State := cbUnchecked;
1302 end
1303 else
1304 begin
1305 chkSporgEfterKunde.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 chkSporgEfterKunde.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 chkSporgEfterKunde.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 chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2766 begin
2767 logTekst := 'Printer label type ';
2768 if (chkAltidPrintLabel.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.chkSporgEfterKundeClick(Sender: TObject);
2866 begin
2867 if chkSporgEfterKunde.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.chkAltidPrintLabelClick(Sender: TObject);
2879 begin
2880 if chkAltidPrintLabel.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 chkSporgEfterKunde.Checked := true;
3787 end
3788 else
3789 begin
3790 chkSporgEfterKunde.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
3819 chkAltidPrintLabel.Enabled := true;
3820 Altidprintepakkelabel1.Enabled := true;
3821 Altidprintepakkelabel1.Checked := false;
3822 chkAltidPrintLabel.Checked := false;
3823 Sprgefterboghandlernummer1.Checked := false;
3824 chkSporgEfterKunde.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
3851 chkAltidPrintLabel.Enabled := false;
3852 Altidprintepakkelabel1.Enabled := false;
3853
3854 Altidprintepakkelabel1.Checked := false;
3855 Sprgefterboghandlernummer1.Checked := false;
3856 chkSporgEfterKunde.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
3878 chkAltidPrintLabel.Enabled := false;
3879 Altidprintepakkelabel1.Enabled := false;
3880 Altidprintepakkelabel1.Checked := false;
3881 Sprgefterboghandlernummer1.Checked := false;
3882 chkSporgEfterKunde.Checked := false;
3883 Sprgefterboghandlernummer1.Enabled := false;
3884 Smpakker1.Enabled := true;
3885 Storepakker1.Enabled := true;
3886 RadioButton1.Enabled := true;
3887 RadioButton2.Enabled := true;
3888 ListBox1.Visible := true;
3889 ListBox1.Items.Clear;
3890 ListBox2.Items.Clear;
3891 EKLoverforsel.Enabled := false;
3892 InitLillePakke();
3893 end;
3894
3895 procedure TMainForm.InitDirektelevering();
3896 begin
3897 AutomatiskTjekkodeStyring1.Enabled := false;
3898 Budlevering1.Checked := true;
3899 PakkeshopNulstil.Visible := false;
3900 InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3901 PanelValg4.Color := clGreen;
3902 PanelValg4.Font.Color := clWhite;
3903
3904 chkAltidPrintLabel.Enabled := false;
3905 Altidprintepakkelabel1.Enabled := false;
3906
3907 Altidprintepakkelabel1.Checked := false;
3908 Sprgefterboghandlernummer1.Checked := false;
3909 chkSporgEfterKunde.Checked := false;
3910 Sprgefterboghandlernummer1.Enabled := false;
3911 Smpakker1.Enabled := true;
3912 Storepakker1.Enabled := true;
3913 RadioButton1.Enabled := true;
3914 RadioButton2.Enabled := true;
3915 ListBox1.Visible := true;
3916 ListBox1.Items.Clear;
3917 DownloadButton01.Enabled := false;
3918 OpdaterListenButton01.Enabled := true;
3919 DownloadButton03.Visible := false;
3920 EKLoverforsel.Enabled := false;
3921 IdFTP1.Passive := true;
3922 IdFTP1.PassiveUseControlHost := true;
3923 if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3924 begin
3925 IndlesScanningLogFil();
3926 IndlesManglendeScanninger();
3927 end;
3928
3929 end;
3930
3931 procedure TMainForm.InitPakkeshoplevering();
3932 begin
3933 AutomatiskTjekkodeStyring1.Enabled := true;
3934 Pakkeshoplevering1.Checked := true;
3935 PakkeshopNulstil.Visible := false;
3936 InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3937 PanelValg5.Color := clGreen;
3938 PanelValg5.Font.Color := clWhite;
3939
3940 chkAltidPrintLabel.Enabled := false;
3941 Altidprintepakkelabel1.Enabled := false;
3942
3943 Altidprintepakkelabel1.Checked := false;
3944 Sprgefterboghandlernummer1.Checked := false;
3945 chkSporgEfterKunde.Checked := false;
3946 Sprgefterboghandlernummer1.Enabled := false;
3947 Smpakker1.Enabled := false;
3948 Storepakker1.Enabled := false;
3949 RadioButton1.Enabled := false;
3950 RadioButton2.Enabled := false;
3951 ListBox1.Visible := true;
3952 ListBox1.Items.Clear;
3953 DownloadButton01.Enabled := false;
3954 OpdaterListenButton01.Enabled := true;
3955 // 20150330: start
3956 // EKLoverforsel.Enabled := false;
3957 EKLoverforsel.Enabled := true;
3958 // 20150330: slut
3959 InitLillePakke();
3960 IndlesScanningLogFil();
3961 if BladhusSted = 0 then
3962 begin
3963 IndlesManglendeScanninger();
3964 end;
3965 IdFTP1.Passive := true;
3966 IdFTP1.PassiveUseControlHost := true;
3967 end;
3968
3969 procedure TMainForm.InitReturFraPakkeshop();
3970 begin
3971 AutomatiskTjekkodeStyring1.Enabled := false;
3972 Returpakkerfrapakkeshop1.Checked := true;
3973 PakkeshopNulstil.Visible := false;
3974 InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3975 PanelValg6.Color := clGreen;
3976 PanelValg6.Font.Color := clWhite;
3977
3978 chkAltidPrintLabel.Enabled := false;
3979 Altidprintepakkelabel1.Enabled := false;
3980
3981 Altidprintepakkelabel1.Checked := false;
3982 Sprgefterboghandlernummer1.Checked := false;
3983 chkSporgEfterKunde.Checked := false;
3984 Sprgefterboghandlernummer1.Enabled := false;
3985 Smpakker1.Enabled := false;
3986 Storepakker1.Enabled := false;
3987 RadioButton1.Enabled := false;
3988 RadioButton2.Enabled := false;
3989 ListBox1.Visible := true;
3990 ListBox1.Items.Clear;
3991 DownloadButton01.Enabled := false;
3992 OpdaterListenButton01.Enabled := true;
3993 EKLoverforsel.Enabled := false;
3994 InitLillePakke();
3995 IndlesScanningLogFil();
3996 if BladhusSted = 0 then
3997 begin
3998 IndlesManglendeScanninger();
3999 end;
4000 IdFTP1.Passive := true;
4001 IdFTP1.PassiveUseControlHost := true;
4002 end;
4003
4004 procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
4005 begin
4006 Scanningtype := '3';
4007 NulstilAutomatiskValg();
4008 InitReturFraKunde();
4009 end;
4010
4011 procedure TMainForm.InitIndleveringskode();
4012 begin
4013 AutomatiskTjekkodeStyring1.Enabled := false;
4014 Returpakkerfrapakkeshop1.Checked := true;
4015 PakkeshopNulstil.Visible := false;
4016 InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
4017 PanelValg7.Color := clGreen;
4018 PanelValg7.Font.Color := clWhite;
4019
4020 chkAltidPrintLabel.Enabled := false;
4021 Altidprintepakkelabel1.Enabled := false;
4022
4023 Altidprintepakkelabel1.Checked := false;
4024 Sprgefterboghandlernummer1.Checked := false;
4025 chkSporgEfterKunde.Checked := false;
4026 Sprgefterboghandlernummer1.Enabled := false;
4027 Smpakker1.Enabled := false;
4028 Storepakker1.Enabled := false;
4029 RadioButton1.Enabled := false;
4030 RadioButton2.Enabled := false;
4031 ListBox1.Visible := true;
4032 ListBox1.Items.Clear;
4033 DownloadButton01.Enabled := false;
4034 OpdaterListenButton01.Enabled := true;
4035 EKLoverforsel.Enabled := false;
4036 InitLillePakke();
4037 IndlesScanningLogFil();
4038 if BladhusSted = 0 then
4039 begin
4040 IndlesManglendeScanninger();
4041 end;
4042 IdFTP1.Passive := true;
4043 IdFTP1.PassiveUseControlHost := true;
4044 end;
4045
4046
4047 procedure TMainForm.Storepakker1Click(Sender: TObject);
4048 begin
4049 InitStorPakke();
4050 end;
4051
4052 procedure TMainForm.Smpakker1Click(Sender: TObject);
4053 begin
4054 InitLillePakke();
4055 end;
4056
4057 procedure TMainForm.InitLillePakke();
4058 begin
4059 RadioButton2.Checked := true;
4060 Smpakker1.Checked := true;
4061 // 20150310: start
4062 // Stregkode := '';
4063 // 20150310: slut
4064 end;
4065
4066 procedure TMainForm.InitStorPakke();
4067 begin
4068 RadioButton1.Checked := true;
4069 Storepakker1.Checked := true;
4070 // 20150310: start
4071 // Stregkode := '';
4072 // 20150310: slut
4073 end;
4074
4075 /// <summary>
4076 /// This function reads the file resource of "FileName" and returns
4077 /// the version number as formatted text.</summary>
4078 /// <example>
4079 /// Sto_GetFmtFileVersion() = '4.13.128.0'
4080 /// Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'
4081 /// </example>
4082 /// <remarks>If "Fmt" is invalid, the function may raise an
4083 /// EConvertError exception.</remarks>
4084 /// <param name="FileName">Full path to exe or dll. If an empty
4085 /// string is passed, the function uses the filename of the
4086 /// running exe or dll.</param>
4087 /// <param name="Fmt">Format string, you can use at most four integer
4088 /// values.</param>
4089 /// <returns>Formatted version number of file, '' if no version
4090 /// resource found.</returns>
4091 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';
4092 const Fmt: String = '%d.%d.%d.%d'): String;
4093 var
4094 sFileName: String;
4095 iBufferSize: DWORD;
4096 iDummy: DWORD;
4097 pBuffer: Pointer;
4098 pFileInfo: Pointer;
4099 iVer: array[1..4] of Word;
4100 S : String;
4101 begin
4102 // set default value
4103 Result := '';
4104 // get filename of exe/dll if no filename is specified
4105 sFileName := Trim(FileName);
4106 if (sFileName = '') then
4107 sFileName := GetModuleName(HInstance);
4108 // get size of version info (0 if no version info exists)
4109 iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
4110 if (iBufferSize > 0) then
4111 begin
4112 GetMem(pBuffer, iBufferSize);
4113 try
4114 // get fixed file info (language independent)
4115 GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
4116 VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
4117 // read version blocks
4118 iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4119 iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4120 iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4121 iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4122 finally
4123 FreeMem(pBuffer);
4124 end;
4125 // format result string
4126 Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
4127
4128 // Hvorfor virker ovenstående ikke ???
4129 S := '';
4130 Str(iVer[1],Result);
4131 S := S+Result+'.';
4132 Str(iVer[2],Result);
4133 S := S+Result+'.';
4134 Str(iVer[3],Result);
4135 S := S+Result+'.';
4136 Str(iVer[4],Result);
4137 S := S+Result+'';
4138 Result := S;
4139 end;
4140 end;
4141
4142 procedure TMainForm.PlaySound(filename : PWideChar);
4143 begin
4144 if (filename <> '') then
4145 begin
4146 sndPlaySound(filename,
4147 SND_NODEFAULT Or SND_ASYNC);
4148 end;
4149 end;
4150
4151 procedure TMainForm.Testlyd1Click(Sender: TObject);
4152 begin
4153 if AlarmLyd <> '' then
4154 begin
4155 PlaySound(PWideChar(AlarmLyd));
4156 end
4157 else
4158 begin
4159 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
4160 end;
4161 end;
4162
4163 procedure TMainForm.Testlyd2Click(Sender: TObject);
4164 begin
4165 // 20150317: start
4166 if (PakkeshopText1.Caption = 'Tjekkode') then
4167 begin
4168 if ScannetOkTilTjekkodeLyd <> '' then
4169 begin
4170 PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
4171 end
4172 else
4173 begin
4174 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
4175 end;
4176 exit;
4177 end;
4178 // 20150317: slut
4179
4180 if Smpakker1.Checked then
4181 if ScannetOkLyd <> '' then
4182 begin
4183 PlaySound(PWideChar(ScannetOkLyd));
4184 end
4185 else
4186 begin
4187 // 20150317: start
4188 // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);
4189 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
4190 // 20150317: slut
4191 end;
4192 if Storepakker1.Checked then
4193 if ScannetOkStorLyd <> '' then
4194 begin
4195 PlaySound(PWideChar(ScannetOkStorLyd));
4196 end
4197 else
4198 begin
4199 // 20150317: start
4200 // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);
4201 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
4202 // 20150317: slut
4203 end;
4204 end;
4205
4206
4207 procedure TMainForm.Budlevering1Click(Sender: TObject);
4208 begin
4209 Scanningtype := '4';
4210 NulstilAutomatiskValg();
4211 InitDirektelevering();
4212 end;
4213
4214 procedure TMainForm.Button1Click(Sender: TObject);
4215 begin;
4216 CheckCode();
4217 end;
4218
4219 procedure TMainForm.EKLoverforselClick(Sender: TObject);
4220 var
4221 WebSvar : String;
4222 URLStr : String;
4223 StedKode : String;
4224 Node: IXMLNode;
4225 I: Integer;
4226 status, kommentar : String;
4227
4228 begin
4229 EKLoverforsel.Enabled := false;
4230
4231 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
4232 logTekst := 'Overfører de scannede pakker til EKL';
4233 SkrivScanningLogFil(logTekst);
4234 StedKode := Sted;
4235 URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
4236 // 20150330: start
4237 if PanelValg5.Color = clGreen then
4238 begin
4239 URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
4240 end;
4241 // 20150330: slut
4242
4243 try
4244 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4245 WebSvar := IdHTTP1.Get(URLStr);
4246 except
4247 on e:EIdConnClosedGracefully do
4248 begin
4249 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4250 WebSvar := IdHTTP1.Get(URLStr);
4251 end;
4252 on e:exception do
4253 begin
4254 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4255 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4256 SkrivScanningLogFil(logTekst);
4257 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4258 end;
4259 end;
4260 try
4261 XMLDocument1.LoadFromXML(WebSvar);
4262 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4263 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4264 if Node.NodeType = ntElement then begin
4265 if Node.NodeName = 'Status' then begin
4266 if not VarIsNull(Node.NodeValue) then
4267 status := Node.NodeValue;
4268 end;
4269 if Node.NodeName = 'Kommentar' then begin
4270 if not VarIsNull(Node.NodeValue) then
4271 kommentar := Node.NodeValue;
4272 end;
4273 end;
4274 end;
4275
4276 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
4277 logTekst := 'Overførsel til EKL: ' + status;
4278 SkrivScanningLogFil(logTekst);
4279
4280 except on e:exception do
4281 begin
4282 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
4283 logTekst := 'Overførsel til EKL: ' + status;
4284 SkrivScanningLogFil(logTekst);
4285 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4286 logTekst := 'Fejl i XML-format: '+e.Message;
4287 SkrivScanningLogFil(logTekst);
4288 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4289 end;
4290 end;
4291
4292 EKLoverforsel.Enabled := true;
4293
4294 ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4295
4296 // Hvis der var fejl i overførslen skal dette fejlmeldes her
4297 if status = 'Fejl' then
4298 begin // Her skal komme en alarm og rød skærm
4299 PlaySound(PWideChar(AlarmLyd));
4300 MainForm.Color := clRed;
4301 RutenummerST.Caption := 'EKL overførsel';
4302 BoghandlerNavnST.Caption := 'Fejl:';
4303 if (pos('Deadlock', Kommentar) > 0) then
4304 begin
4305 RutenummerST.Caption := 'EKL overførsel fejlet';
4306 BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
4307 end;
4308 KommentarST.Caption := Kommentar;
4309 PakkeshopNulstil.Visible := true;
4310 end;
4311
4312 end;
4313
4314 procedure TMainForm.CheckCode();
4315 var
4316 Barcode, Svar : String;
4317 ClickedOK : Boolean;
4318 begin
4319 ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
4320 if ClickedOk then
4321 begin
4322 { if (BarCodeValid(Barcode)) then
4323 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4324 else
4325 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4326 }
4327 // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
4328 { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
4329 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4330 else
4331 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4332 }
4333 Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4334
4335 MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4336 CheckCode();
4337 end;
4338
4339 end;
4340
4341 function TMainForm.BarCodeValid (ACode: string): boolean;
4342 var
4343 I: integer;
4344 SumOdd, SumEven: integer;
4345 ADigit, AChecksumDigit: integer;
4346 begin
4347 SumOdd := 0;
4348 SumEven := 0;
4349 for I := 1 to (Length (ACode) - 1) do begin
4350 ADigit := StrToIntDef (ACode [I], 0);
4351 if (I MOD 2 = 0) then begin
4352 SumEven := SumEven + ADigit;
4353 end else begin
4354 SumOdd := SumOdd + ADigit;
4355 end; {if}
4356 end; {for}
4357 AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);
4358 Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);
4359 end; {--BarCodeValid--}
4360
4361 { used for EAN 8/13 }
4362 function TMainForm.CheckSumModulo10(const data:string):string;
4363 var i,fak,sum : Integer;
4364 begin
4365 sum := 0;
4366 fak := Length(data);
4367 for i:=1 to Length(data) do
4368 begin
4369 if (fak mod 2) = 0 then
4370 sum := sum + (StrToInt(data[i])*1)
4371 else
4372 sum := sum + (StrToInt(data[i])*3);
4373 dec(fak);
4374 end;
4375 if (sum mod 10) = 0 then
4376 result := data+'0'
4377 else
4378 result := data+IntToStr(10-(sum mod 10));
4379 end;
4380
4381 //
4382 // Bladhus ***
4383 //
4384 procedure TMainForm.DownloadBladhusRuteskiftfil();
4385 const
4386 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4387
4388 var
4389 filnavn_input : string;
4390 filnavn_output : string;
4391 buttonSelected : Integer;
4392
4393 begin
4394 filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
4395 filnavn_output := BladhusRuteskiftfil_lokal;
4396
4397 case BladhusSted of
4398 00 : begin;
4399 end;
4400 01 : begin;
4401 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4402 if buttonSelected = mrOK then
4403 begin
4404 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4405 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4406 SkrivScanningLogFil(logTekst);
4407 try
4408 try
4409
4410 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4411 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4412 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4413 IdFTP1.Connect;
4414
4415 //IdFTP1.TransferType := ftASCII;
4416 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4417 try
4418 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4419 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4420 except on e:EIdConnClosedGracefully do
4421 begin
4422 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4423 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4424 end;
4425 end;
4426 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4427
4428 ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4429 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4430 SkrivScanningLogFil(logTekst);
4431
4432 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4433 logTekst := 'Ruteskift fil tjekkes.';
4434 SkrivScanningLogFil(logTekst);
4435
4436 finally
4437 IdFTP1.Disconnect;
4438 end;
4439
4440 except on e:exception do
4441 begin
4442 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4443 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4444 SkrivScanningLogFil(logTekst);
4445 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4446 [e.Message
4447 + CrLf + 'Host: '+IdFTP1.host
4448 + CrLf + 'Username: '+IdFTP1.Username
4449 ]
4450 );
4451 end;
4452 end;
4453 end
4454 else
4455 begin
4456 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4457 logTekst := 'Download af ruteskiftfil annulleret';
4458 SkrivScanningLogFil(logTekst);
4459 end;
4460 IndlesRuteskiftFil(filnavn_output);
4461 end;
4462 02 : begin;
4463 end;
4464 03 : begin;
4465 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4466 if buttonSelected = mrOK then
4467 begin
4468 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4469 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4470 SkrivScanningLogFil(logTekst);
4471 try
4472 try
4473
4474 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4475 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4476 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4477 IdFTP1.Connect;
4478
4479 //IdFTP1.TransferType := ftASCII;
4480 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4481 try
4482 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4483 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4484 except on e:EIdConnClosedGracefully do
4485 begin
4486 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4487 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4488 end;
4489 end;
4490 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4491
4492 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4493 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4494 SkrivScanningLogFil(logTekst);
4495
4496 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4497 logTekst := 'Ruteskift fil tjekkes.';
4498 SkrivScanningLogFil(logTekst);
4499
4500 finally
4501 IdFTP1.Disconnect;
4502 end;
4503
4504 except on e:exception do
4505 begin
4506 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4507 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4508 SkrivScanningLogFil(logTekst);
4509 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4510 [e.Message
4511 + CrLf + 'Host: '+IdFTP1.host
4512 + CrLf + 'Username: '+IdFTP1.Username
4513 ]
4514 );
4515 end;
4516 end;
4517 end
4518 else
4519 begin
4520 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4521 logTekst := 'Download af ruteskiftfil annulleret';
4522 SkrivScanningLogFil(logTekst);
4523 end;
4524 IndlesRuteskiftFil(filnavn_output);
4525 end;
4526 04 : begin;
4527 end;
4528 else
4529 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
4530 end;
4531
4532 end;
4533
4534 procedure TMainForm.DownloadBladhusKontrolfil();
4535 const
4536 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4537
4538 var
4539 filnavn_input : string;
4540 filnavn_output : string;
4541 buttonSelected : Integer;
4542
4543 begin
4544 filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
4545 filnavn_output := BladhusKontrolfil_lokal;
4546
4547 case BladhusSted of
4548 01 :
4549 begin;
4550 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4551 if buttonSelected = mrOK then
4552 begin
4553 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4554 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4555 SkrivScanningLogFil(logTekst);
4556 try
4557 try
4558
4559 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4560 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4561 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4562 IdFTP1.Connect;
4563
4564 //IdFTP1.TransferType := ftASCII;
4565 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4566 try
4567 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4568 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4569 except on e:EIdConnClosedGracefully do
4570 begin
4571 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4572 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4573 end;
4574 end;
4575 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4576
4577 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4578 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4579 SkrivScanningLogFil(logTekst);
4580
4581 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4582 logTekst := 'Rute kontrol fil tjekkes.';
4583 SkrivScanningLogFil(logTekst);
4584
4585 finally
4586 IdFTP1.Disconnect;
4587 end;
4588
4589 except on e:exception do
4590 begin
4591 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4592 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4593 SkrivScanningLogFil(logTekst);
4594 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4595 [e.Message
4596 + CrLf + 'Host: '+IdFTP1.host
4597 + CrLf + 'Username: '+IdFTP1.Username
4598 ]
4599 );
4600 end;
4601 end;
4602 end
4603 else
4604 begin
4605 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4606 logTekst := 'Download af kontrolfil annulleret';
4607 SkrivScanningLogFil(logTekst);
4608 end;
4609 IndlesKontrolFil(filnavn_output);
4610 end;
4611 02 : begin;
4612 end;
4613 03 : begin;
4614 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4615 if buttonSelected = mrOK then
4616 begin
4617 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4618 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4619 SkrivScanningLogFil(logTekst);
4620 try
4621 try
4622
4623 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4624 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4625 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4626 IdFTP1.Connect;
4627
4628 //IdFTP1.TransferType := ftASCII;
4629 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4630 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4631
4632 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4633 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4634 SkrivScanningLogFil(logTekst);
4635
4636 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4637 logTekst := 'Rute kontrol fil tjekkes.';
4638 SkrivScanningLogFil(logTekst);
4639
4640 finally
4641 IdFTP1.Disconnect;
4642 end;
4643
4644 except on e:exception do
4645 begin
4646 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4647 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4648 SkrivScanningLogFil(logTekst);
4649 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4650 [e.Message
4651 + CrLf + 'Host: '+IdFTP1.host
4652 + CrLf + 'Username: '+IdFTP1.Username
4653 ]
4654 );
4655 end;
4656 end;
4657 end
4658 else
4659 begin
4660 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4661 logTekst := 'Download af kontrolfil annulleret';
4662 SkrivScanningLogFil(logTekst);
4663 end;
4664 IndlesKontrolFil(filnavn_output);
4665 end;
4666 04 : begin;
4667 end;
4668 else
4669 ShowMessage('Ukendt Bladhus sted ???') ;
4670 end;
4671
4672 end;
4673
4674 procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
4675 const
4676 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4677
4678 var
4679 testsystem : String;
4680
4681 begin
4682 testsystem := '';
4683 if (Pos('omdeling.info',Url) = 0) then
4684 begin
4685 testsystem := 'TEST_';
4686 end;
4687 filnavn_output := testsystem + filnavn_output;
4688
4689 ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4690 logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4691 SkrivScanningLogFil(logTekst);
4692 try
4693 try
4694
4695 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4696 IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4697 IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4698 IdFTP1.Connect;
4699
4700 //IdFTP1.TransferType := ftASCII;
4701 try
4702 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4703 IdFTP1.ChangeDir('fraScannerprogram');
4704 IdFTP1.Put(filnavn_input, filnavn_output, True);
4705 except on e:EIdConnClosedGracefully do
4706 begin
4707 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4708 IdFTP1.Put(filnavn_input, filnavn_output, True);
4709 end;
4710 end;
4711 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4712
4713 logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4714 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4715 SkrivScanningLogFil(logTekst);
4716
4717 finally
4718 IdFTP1.Disconnect;
4719 end;
4720
4721 except on e:exception do
4722 begin
4723 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4724 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4725 SkrivScanningLogFil(logTekst);
4726 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4727 [e.Message
4728 + CrLf + 'Host: '+IdFTP1.host
4729 + CrLf + 'Username: '+IdFTP1.Username
4730 ]
4731 );
4732 end;
4733 end;
4734 end;
4735
4736 procedure TMainForm.UploadLogfilTilDAO();
4737 const
4738 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4739
4740 var
4741 idag, imorgen : TDateTime;
4742 imorgenYmd : string;
4743 logFilnavn : string;
4744 filnavn_input : string;
4745 filnavn_output : string;
4746 buttonSelected : Integer;
4747 openDialog : TOpenDialog;
4748
4749 begin
4750 idag := Now;
4751 imorgen := IncDay(idag, 1); //adds 1 day(s)
4752 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4753 if (FormatDateTime('hh:nn',idag) < '12:00') then
4754 begin
4755 imorgen := idag;
4756 end;
4757 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4758 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4759 filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4760 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4761
4762 buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4763 if buttonSelected = mrOK then
4764 begin
4765 SendFilTilDao('Log', filnavn_input, filnavn_output);
4766 end
4767 else
4768 begin
4769 buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4770 if buttonSelected = mrOK then
4771 begin
4772 // Create the open dialog object - assign to our open dialog variable
4773 openDialog := TOpenDialog.Create(self);
4774
4775 // Set up the starting directory to be the current one
4776 openDialog.InitialDir := GetCurrentDir + '\Logs';
4777
4778 // Only allow existing files to be selected
4779 openDialog.Options := [ofFileMustExist];
4780
4781 // Allow only .log files to be selected
4782 openDialog.Filter := 'Log filer|*.log';
4783
4784 // Display the open file dialog
4785 if openDialog.Execute then
4786 begin
4787 filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4788 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4789 SendFilTilDao('Log', filnavn_input, filnavn_output);
4790 end
4791 else
4792 begin
4793 logTekst := 'Upload af log fil annulleret';
4794 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4795 SkrivScanningLogFil(logTekst);
4796 end;
4797
4798 // Free up the dialog
4799 openDialog.Free;
4800 end
4801 else
4802 begin
4803 logTekst := 'Upload af log fil annulleret';
4804 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4805 SkrivScanningLogFil(logTekst);
4806 end;
4807 end;
4808
4809 end;
4810
4811 procedure TMainForm.UploadInifilTilDAO();
4812 const
4813 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4814
4815 var
4816 idag, imorgen : TDateTime;
4817 imorgenYmd : string;
4818 iniFilnavn : string;
4819 filnavn_input : string;
4820 filnavn_output : string;
4821 buttonSelected : Integer;
4822
4823 begin
4824 idag := Now;
4825 imorgen := IncDay(idag, 1); //adds 1 day(s)
4826 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4827 if (FormatDateTime('hh:nn',idag) < '12:00') then
4828 begin
4829 imorgen := idag;
4830 end;
4831 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4832 iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4833 filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4834 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4835
4836 buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4837 if buttonSelected = mrOK then
4838 begin
4839 SendFilTilDao('Ini', filnavn_input, filnavn_output);
4840 end
4841 else
4842 begin
4843 logTekst := 'Upload af ini fil annulleret';
4844 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4845 SkrivScanningLogFil(logTekst);
4846 end;
4847
4848 end;
4849
4850 procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4851 begin
4852 UploadLogfilTilDAO();
4853 UploadInifilTilDAO();
4854 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4855 end;
4856
4857 procedure TMainForm.DownloadButton01Click(Sender: TObject);
4858 begin
4859 DownloadBladhusKontrolfil();
4860 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4861 end;
4862
4863 procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);
4864 const
4865 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4866
4867 begin
4868 IndlesManglendeScanninger();
4869 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4870 end;
4871
4872 procedure TMainForm.DownloadButton03Click(Sender: TObject);
4873 begin
4874 if (getProddag() = 'lørdag') then
4875 begin
4876 DownloadBladhusRuteskiftfil();
4877 end;
4878 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4879 end;
4880
4881 function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;
4882 var
4883 S2: string;
4884 begin
4885 Result := 0;
4886 S2 := S + Border;
4887 repeat
4888 SetLength(A, Length(A) + 1);
4889 a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
4890 Delete(S2, 1,Length(a[Result] + Border));
4891 Inc(Result);
4892 until S2 = '';
4893 end;
4894
4895 procedure TMainForm.IndlesManglendeScanninger();
4896 var
4897 WebSvar : String;
4898 URLStr : String;
4899 StedKode : String;
4900 Node: IXMLNode;
4901 I: Integer;
4902 stregkode, modtagernavn, modtageradresse, kommentar : string;
4903 pakketype, tjekkodestatus : String;
4904 pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4905 pakketyper : TStrings;
4906 antlin : Integer;
4907 // 20150306: start
4908 antlinIdag, antlinSenere : Integer;
4909 // 20150306: slut
4910 XmlFelter : TStrings;
4911
4912 begin
4913 XmlFelter := TStringList.Create;
4914 pakketyper := TStringList.Create;
4915 linienr := 0;
4916 ListBox2.Clear;
4917 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4918 logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4919 SkrivScanningLogFil(logTekst);
4920 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4921 begin
4922 StedKode := BladhusStedKode[BladhusSted];
4923 end
4924 else
4925 begin
4926 StedKode := Sted;
4927 end;
4928
4929 // 20150310: start
4930 (*
4931 if Returpakkerfrapakkeshop1.Checked then
4932 begin
4933 URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4934 end
4935 else if Pakkeshoplevering1.Checked then
4936 begin
4937 URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4938 end
4939 else if Pakkernormal1.Checked then
4940 begin
4941 URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4942 end
4943 else
4944 begin
4945 URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4946 end;
4947 *)
4948 if (Scanningtype = '6') then
4949 begin
4950 URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4951 end
4952 else if (Scanningtype = '5') then
4953 begin
4954 URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4955 end
4956 else if (Scanningtype = '1') then
4957 begin
4958 URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4959 end
4960 else if (Scanningtype = '4') then
4961 begin
4962 URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4963 end
4964 else
4965 begin
4966 exit;
4967 end;
4968 // 20150310: slut
4969
4970 try
4971 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4972 // URLStr := string(Utf8Encode(URLStr));
4973 WebSvar := IdHTTP1.Get(URLStr);
4974 except
4975 on e:EIdConnClosedGracefully do
4976 begin
4977 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4978 WebSvar := IdHTTP1.Get(URLStr);
4979 end;
4980 on e:exception do
4981 begin
4982 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4983 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4984 SkrivScanningLogFil(logTekst);
4985 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4986 end;
4987 end;
4988 try
4989 XMLDocument1.LoadFromXML(WebSvar);
4990
4991 // 20150206: start
4992 antlin := 0;
4993 antlinIdag := 0;
4994 antlinSenere := 0;
4995 // 20150306: slut
4996 antalFelterFundet := 0;
4997 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4998 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4999 if Node.NodeType = ntElement then begin
5000 if Node.NodeName = 'Stregkode' then
5001 begin
5002 antlin := antlin + 1;
5003 // 20150306: start
5004 if not VarIsNull(Node.NodeValue) then
5005 begin
5006 if (pos('(', Node.NodeValue) = 0) then
5007 begin
5008 antlinIdag := antlinIdag + 1;
5009 end
5010 else
5011 begin
5012 antlinSenere := antlinSenere + 1;
5013 end;
5014 end;
5015 // 20150306: slut
5016 end;
5017 end;
5018 if (XmlFelter.values[Node.NodeName] <> '') then
5019 XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
5020 else
5021 XmlFelter.values[Node.NodeName] := '1';
5022
5023 end;
5024 antalLiniefelter := XmlFelter.Count;
5025 antalFelterFundet := 0;
5026 SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
5027 SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
5028 // 20150206: start
5029 // logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';
5030 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
5031 if (antlinSenere > 0) then
5032 begin
5033 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
5034 end;
5035 logTekst := logTekst + '.';
5036 // 20150306: slut
5037 SkrivScanningLogFil(logTekst);
5038 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
5039 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
5040 if Node.NodeType = ntElement then begin
5041 if Node.NodeName = 'Stregkode' then begin
5042 if not VarIsNull(Node.NodeValue) then
5043 stregkode := Node.NodeValue;
5044 antalFelterFundet := antalFelterFundet + 1;
5045 end;
5046 if Node.NodeName = 'ModtagerNavn' then begin
5047 if not VarIsNull(Node.NodeValue) then
5048 modtagernavn := Node.NodeValue;
5049 antalFelterFundet := antalFelterFundet + 1;
5050 end;
5051 if Node.NodeName = 'ModtagerAdresse' then begin
5052 if not VarIsNull(Node.NodeValue) then
5053 modtageradresse := Node.NodeValue;
5054 antalFelterFundet := antalFelterFundet + 1;
5055 end;
5056 if Node.NodeName = 'Kommentar' then begin
5057 if not VarIsNull(Node.NodeValue) then
5058 kommentar := Node.NodeValue;
5059 antalFelterFundet := antalFelterFundet + 1;
5060 end;
5061 if Node.NodeName = 'PakkeType' then begin
5062 if not VarIsNull(Node.NodeValue) then
5063 pakketype := Node.NodeValue;
5064 antalFelterFundet := antalFelterFundet + 1;
5065 if (pakketyper.values[pakketype] <> '') then
5066 pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
5067 else
5068 pakketyper.values[pakketype] := '1';
5069 end;
5070 if Node.NodeName = 'TjekkodeStatus' then begin
5071 if not VarIsNull(Node.NodeValue) then
5072 tjekkodestatus := Node.NodeValue;
5073 antalFelterFundet := antalFelterFundet + 1;
5074 if (tjekkodestatus = '-1') then
5075 begin
5076 // 20150306: start
5077 // stregkoderMedTjekkodeArray[linienr] := stregkode;
5078 if (pos(' ', stregkode) > 0) then
5079 begin
5080 stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
5081 end
5082 else
5083 begin
5084 stregkoderMedTjekkodeArray[linienr] := stregkode;
5085 end;
5086 // 20150306: slut
5087 linienr := linienr + 1;
5088 end;
5089 end;
5090 if antalFelterFundet = antalLiniefelter then
5091 begin
5092 if (ScanningType = '1') then
5093 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5094 else if (ScanningType = '4') then
5095 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
5096 else if (ScanningType = '5') then
5097 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5098 else
5099 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
5100 antalFelterFundet := 0;
5101 tjekkodestatus := '';
5102 end;
5103 end;
5104 end;
5105 for pakketypeix := 0 to pakketyper.Count-1 do
5106 begin
5107 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
5108 end;
5109
5110 // Free up the list object
5111 pakketyper.Free;
5112 // 20150306: start
5113 // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
5114 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
5115 if (antlinSenere > 0) then
5116 begin
5117 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
5118 end;
5119 logTekst := logTekst + '.';
5120 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
5121 // 20150306: slut
5122 // 20150309: start
5123 if (antlinSenere > 0) then
5124 begin
5125 StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
5126 end
5127 else
5128 begin
5129 StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
5130 end;
5131 // 20150309: slut
5132
5133 // 20150310: start
5134 if (Scanningtype = '1') then
5135 begin
5136 //antlinIdag := 9876; // til test af boksens udseende ved stort tal
5137 PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
5138 if (antlinIdag + antlinSenere > 0) then
5139 begin
5140 PanelManglendePakker1.Visible := true;
5141 end
5142 else
5143 begin
5144 PanelManglendePakker1.Visible := false;
5145 end;
5146 end;
5147
5148 if (Scanningtype = '2') then
5149 begin
5150 PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
5151 if (antlinIdag + antlinSenere > 0) then
5152 begin
5153 PanelManglendePakker2.Visible := true;
5154 end
5155 else
5156 begin
5157 PanelManglendePakker2.Visible := false;
5158 end;
5159 end;
5160
5161 if (Scanningtype = '3') then
5162 begin
5163 PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
5164 if (antlinIdag + antlinSenere > 0) then
5165 begin
5166 PanelManglendePakker3.Visible := true;
5167 end
5168 else
5169 begin
5170 PanelManglendePakker3.Visible := false;
5171 end;
5172 end;
5173
5174 if (Scanningtype = '4') then
5175 begin
5176 PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
5177 if (antlinIdag + antlinSenere > 0) then
5178 begin
5179 PanelManglendePakker4.Visible := true;
5180 end
5181 else
5182 begin
5183 PanelManglendePakker4.Visible := false;
5184 end;
5185 end;
5186
5187 if (Scanningtype = '5') then
5188 begin
5189 PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
5190 if (antlinIdag + antlinSenere > 0) then
5191 begin
5192 PanelManglendePakker5.Visible := true;
5193 end
5194 else
5195 begin
5196 PanelManglendePakker5.Visible := false;
5197 end;
5198 end;
5199
5200 if (Scanningtype = '6') then
5201 begin
5202 PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
5203 if (antlinIdag + antlinSenere > 0) then
5204 begin
5205 PanelManglendePakker6.Visible := true;
5206 end
5207 else
5208 begin
5209 PanelManglendePakker6.Visible := false;
5210 end;
5211 end;
5212 // 20150310: slut
5213
5214 except on e:exception do
5215 begin
5216 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
5217 logTekst := 'Fejl i XML-format: '+e.Message;
5218 SkrivScanningLogFil(logTekst);
5219 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
5220 end;
5221 end;
5222
5223 end;
5224
5225 procedure TMainForm.IndlesScanningLogFil();
5226 var
5227 SomeTxtFile : TextFile;
5228 buffer : string;
5229 S: string;
5230 idag, imorgen : TDateTime;
5231 imorgenYmd : string;
5232 logFilnavn : string;
5233
5234 begin
5235 idag := Now;
5236 imorgen := IncDay(idag, 1); //adds 1 day(s)
5237 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5238 if (FormatDateTime('hh:nn',idag) < '12:00') then
5239 begin
5240 imorgen := idag;
5241 end;
5242 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5243 logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
5244 if FileExists(logFilnavn) then
5245 begin
5246 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
5247 logTekst := logFilnavn+' indlæses.';
5248 SkrivScanningLogFil(logTekst);
5249 AssignFile(SomeTxtFile, logFilnavn);
5250 try
5251 Reset(SomeTxtFile);
5252 while not EOF(SomeTxtFile) do
5253 begin
5254 ReadLn(SomeTxtFile, buffer) ;
5255 S := buffer;
5256 ListBox1.Items.Insert(0, S);
5257 end;
5258 finally
5259 CloseFile(SomeTxtFile);
5260 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
5261 ListBox1.Items.Insert(0,'');
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 end;
5268 end;
5269 end;
5270
5271 procedure TMainForm.SkrivScanningLogFil(var tekst : string);
5272 var
5273 SomeTxtFile : TextFile;
5274 buffer : string;
5275 S: string;
5276 idag, imorgen : TDateTime;
5277 imorgenYmd : string;
5278 logFilnavn : string;
5279 error : Integer;
5280
5281 begin
5282 if (SkrivLog = '1') then
5283 begin
5284 idag := Now;
5285 imorgen := IncDay(idag, 1); //adds 1 day(s)
5286 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5287 if (FormatDateTime('hh:nn',idag) < '12:00') then
5288 begin
5289 imorgen := idag;
5290 end;
5291 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5292 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
5293 // Get the current directory
5294 // dir := GetCurrentDir;
5295 // ShowMessage('Current directory = '+dir);
5296 // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
5297 // ShowMessage('logFilnavn = '+logFilnavn);
5298
5299 if not DirectoryExists('Logs') then
5300 begin
5301 CreateDir('Logs');
5302 end;
5303
5304 AssignFile(SomeTxtFile, logFilnavn);
5305 if FileExists(logFilnavn) then
5306 begin
5307 try
5308 try
5309 Append(SomeTxtFile);
5310 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5311 except on e:exception do
5312 //ShowMessageFmt('File create failed with error %d',[error]);
5313 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
5314 end;
5315 finally
5316 CloseFile(SomeTxtFile);
5317 end;
5318 end
5319 else
5320 begin
5321 try
5322 try
5323 ReWrite(SomeTxtFile);
5324 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5325 except on e:exception do
5326 // ShowMessageFmt('File create failed with error %d',[error]);
5327 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
5328 end;
5329 finally
5330 CloseFile(SomeTxtFile);
5331 end;
5332 end;
5333 end;
5334 end;
5335
5336 procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
5337 var
5338 SomeTxtFile : TextFile;
5339 buffer : string;
5340 linnr : integer;
5341 S: string;
5342 A: TStrArray;
5343 idag, imorgen : TDateTime;
5344 imorgenYmd : string;
5345
5346 begin
5347 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5348 logTekst := filnavn+' indlæses.';
5349 SkrivScanningLogFil(logTekst);
5350 SetLength(ruteHverdagArray, 1);
5351 SetLength(ruteLordagArray, 1);
5352 idag := Now;
5353 imorgen := IncDay(idag, 1); //adds 1 day(s)
5354 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5355 if (FormatDateTime('hh:nn',idag) < '12:00') then
5356 begin
5357 imorgen := idag;
5358 end;
5359 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5360 if FileExists(filnavn) then
5361 begin
5362 AssignFile(SomeTxtFile, filnavn);
5363 linnr := 0;
5364 try
5365 Reset(SomeTxtFile);
5366 while not EOF(SomeTxtFile) do
5367 begin
5368 ReadLn(SomeTxtFile, buffer) ;
5369 S := buffer;
5370 SetLength(A,0);
5371 Explode(A, ';', S);
5372 if (length(A) < 2) then
5373 begin
5374 Explode(A, ',', S);
5375 end;
5376 if (length(A) > 1) then
5377 begin
5378 SetLength(ruteHverdagArray, linnr+1);
5379 SetLength(ruteLordagArray, linnr+1);
5380 ruteHverdagArray[linnr] := A[0];
5381 ruteLordagArray[linnr] := A[1];
5382 linnr := linnr+1;
5383 end;
5384 end;
5385 finally
5386 //ShowMessage(IntToStr(length(A)));
5387 CloseFile(SomeTxtFile);
5388 //ShowMessage(IntToStr(length(ruteHverdagArray)));
5389 if (linnr > 0) then
5390 begin
5391 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5392 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5393 SkrivScanningLogFil(logTekst);
5394 end
5395 else
5396 begin
5397 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5398 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5399 SkrivScanningLogFil(logTekst);
5400 PlaySound(PWideChar(AlarmLyd));
5401 end;
5402 end;
5403 end
5404 else
5405 begin
5406 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
5407 logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
5408 SkrivScanningLogFil(logTekst);
5409 PlaySound(PWideChar(AlarmLyd));
5410 end;
5411 end;
5412
5413 procedure TMainForm.IndlesKontrolFil(var filnavn : string);
5414 var
5415 SomeTxtFile : TextFile;
5416 buffer : string;
5417 linnr : integer;
5418 S: string;
5419 A: TStrArray;
5420 idag, imorgen : TDateTime;
5421 imorgenYmd : string;
5422
5423 begin
5424 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5425 logTekst := filnavn+' indlæses.';
5426 SkrivScanningLogFil(logTekst);
5427 SetLength(ruteArray, 1);
5428 SetLength(korelisteArray, 1);
5429 idag := Now;
5430 imorgen := IncDay(idag, 1); //adds 1 day(s)
5431 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5432 if (FormatDateTime('hh:nn',idag) < '12:00') then
5433 begin
5434 imorgen := idag;
5435 end;
5436 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5437 if FileExists(filnavn) then
5438 begin
5439 AssignFile(SomeTxtFile, filnavn);
5440 linnr := 0;
5441 try
5442 Reset(SomeTxtFile);
5443 while not EOF(SomeTxtFile) do
5444 begin
5445 ReadLn(SomeTxtFile, buffer) ;
5446 S := buffer;
5447 SetLength(A,0);
5448 Explode(A, ';', S);
5449 if (length(A) < 3) then
5450 begin
5451 Explode(A, ',', S);
5452 end;
5453 if (A[0]=imorgenYmd) then
5454 begin
5455 if (length(A) > 2) then
5456 begin
5457 SetLength(ruteArray, linnr+1);
5458 SetLength(korelisteArray, linnr+1);
5459 ruteArray[linnr] := A[1];
5460 korelisteArray[linnr] := A[2];
5461 linnr := linnr+1;
5462 end;
5463 end;
5464 end;
5465 finally
5466 //ShowMessage(IntToStr(length(A)));
5467 CloseFile(SomeTxtFile);
5468 //ShowMessage(IntToStr(length(ruteArray)));
5469 if (linnr > 0) then
5470 begin
5471 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5472 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5473 SkrivScanningLogFil(logTekst);
5474 end
5475 else
5476 begin
5477 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5478 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5479 SkrivScanningLogFil(logTekst);
5480 PlaySound(PWideChar(AlarmLyd));
5481 end;
5482 end;
5483 end
5484 else
5485 begin
5486 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
5487 logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
5488 SkrivScanningLogFil(logTekst);
5489 PlaySound(PWideChar(AlarmLyd));
5490 end;
5491 end;
5492
5493 //
5494 // Bladhus ***
5495 //
5496 function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
5497 var
5498 i : Integer;
5499 svar : String;
5500
5501 begin
5502 //ShowMessage('Køreliste 1: '+korelisteArray[0]);
5503 // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
5504 // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
5505 //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
5506
5507 svar := 'Køreliste ikke i kontrolfil';
5508 case BladhusSted of
5509 01 :
5510 begin;
5511 for i := 0 to length(ruteArray)-1 do
5512 begin
5513 if (Koreliste=ruteArray[i]) then
5514 begin
5515 svar := korelisteArray[i]; // returnerer den forventede køreliste
5516 end;
5517 end;
5518 end;
5519 // 02 : begin;
5520 //ShowMessage('02') ;
5521 // end;
5522 03 : begin;
5523 for i := 0 to length(ruteArray)-1 do
5524 begin
5525 if (Koreliste=ruteArray[i]) then
5526 begin
5527 svar := korelisteArray[i]; // returnerer den forventede køreliste
5528 end;
5529 end;
5530 end;
5531 // 04 : begin;
5532 //ShowMessage('04') ;
5533 // end;
5534 else
5535 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5536 end;
5537 if (RuteNummer = 'Rutenr') then // fra printertest funktionen
5538 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5539
5540 result := svar;
5541 end;
5542
5543 function TMainForm.getProddato() : TDate;
5544 var
5545 idag, imorgen : TDateTime;
5546 imorgenYmd : string;
5547
5548 begin
5549 idag := Now;
5550 imorgen := IncDay(idag, 1); //adds 1 day(s)
5551 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5552 if (FormatDateTime('hh:nn',idag) < '12:00') then
5553 begin
5554 imorgen := idag;
5555 end;
5556 imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
5557 result := StrToDateTime(imorgenYmd);
5558 end;
5559
5560 function TMainForm.getProddag() : String;
5561 begin
5562 // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
5563 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
5564 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
5565 end;
5566
5567 function TMainForm.retRutenummer(rutenummer : String) : String;
5568 var
5569 i : Integer;
5570 svar : String;
5571
5572 begin
5573 svar := rutenummer;
5574 case BladhusSted of
5575 01 :
5576 begin;
5577 //ShowMessage('01') ;
5578 end;
5579 // 02 : begin;
5580 //ShowMessage('02') ;
5581 // end;
5582 03 : begin;
5583 for i := 0 to length(ruteHverdagArray)-1 do
5584 begin
5585 if (rutenummer=ruteHverdagArray[i]) then
5586 begin
5587 svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
5588 end;
5589 end;
5590 end;
5591 // 04 : begin;
5592 //ShowMessage('04') ;
5593 // end;
5594 else
5595 svar := rutenummer; // Dette svarer til at rute ikke skal ændres
5596 end;
5597 result := svar;
5598 end;
5599
5600 function TMainForm.GetCurrentPrinterHandle: THandle;
5601 var
5602 Device, Driver, Port: array[0..255] of Char;
5603 hDeviceMode: THandle;
5604 begin
5605 Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
5606 if not OpenPrinter(@Device, Result, nil) then
5607 RaiseLastWin32Error;
5608 end;
5609
5610 function TMainForm.SavePChar(p: PChar): PChar;
5611 const
5612 error: PChar = 'Nil';
5613 begin
5614 if not Assigned(p) then
5615 Result := error
5616 else
5617 Result := p;
5618 end;
5619
5620 procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5621 begin
5622 if Scanogstjekkoden1.Checked then
5623 begin
5624 CheckBox3.Checked := true;
5625 end
5626 else
5627 begin
5628 CheckBox3.Checked := false;
5629 end;
5630 end;
5631
5632 function TMainForm.AdobeReaderExists: Boolean;
5633 var
5634 AReg: TRegistry;
5635 begin
5636 result:= false;
5637 AReg := TRegistry.Create;
5638 AReg.RootKey := HKEY_LOCAL_MACHINE;
5639 if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then
5640 result:= True;
5641 AReg.Free;
5642 end;
5643
5644 procedure TMainForm.CheckPrintQue(tjektype : string);
5645 type
5646 TJobs = array [0..1000] of JOB_INFO_1;
5647 PJobs = ^TJobs;
5648 var
5649 hPrinter: THandle;
5650 bytesNeeded, numJobs, i: Cardinal;
5651 pJ: PJobs;
5652 printerTxt, statusTxt, dokumentTxt: String;
5653 begin
5654
5655 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1
5656 // 'Test' skal vise alarmlinie, samt opdatere listbox1
5657 // 'Timer' skal kun vise alarmlinie
5658
5659 if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5660 begin
5661 printerTxt := 'Der er fravalgt printer i dette program';
5662 ListBox1.Items.Insert(0,printerTxt);
5663 SkrivScanningLogFil(printerTxt);
5664 end
5665 else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5666 begin
5667 printerTxt := 'Der er ikke installeret en printer på denne PC';
5668 ListBox1.Items.Insert(0,printerTxt);
5669 SkrivScanningLogFil(printerTxt);
5670 end
5671 else
5672 begin
5673 hPrinter := GetCurrentPrinterHandle;
5674 try
5675 EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
5676 pJ := AllocMem(bytesNeeded);
5677 if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
5678 RaiseLastWin32Error;
5679
5680 if numJobs = 0 then
5681 begin
5682 if (tjektype = 'Test') then
5683 begin
5684 logTekst := printerTxt + ': Ingen dokumenter i kø';
5685 ListBox1.Items.Insert(0,logTekst);
5686 SkrivScanningLogFil(logTekst);
5687 end;
5688 PrinterstatusStaticText1.Caption := '';
5689 PrinterstatusStaticText1.Color := MainForm.Color;
5690 end
5691 else // så er der kø til printeren
5692 begin
5693 printerTxt := SavePChar(pJ^[0].pPrinterName);
5694 if (tjektype = 'Opstart') or (tjektype = 'Test') then
5695 begin
5696 logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;
5697 ListBox1.Items.Insert(0,logTekst);
5698 SkrivScanningLogFil(logTekst);
5699 end;
5700 for i := 0 to Pred(numJobs) do
5701 begin
5702 printerTxt := SavePChar(pJ^[i].pPrinterName);
5703 statusTxt := 'Ukendt';
5704 if (IntToStr(pJ^[i].Status) = '0') then
5705 statusTxt := 'Venter...';
5706 if (IntToStr(pJ^[i].Status) = '4096') then
5707 statusTxt := 'Printer...';
5708 if (IntToStr(pJ^[i].Status) = '8210') then
5709 statusTxt := 'Printerfejl';
5710 if (IntToStr(pJ^[i].Status) = '8214') then
5711 statusTxt := 'Sletter print...';
5712
5713 dokumentTxt := SavePChar(pJ^[i].pDocument);
5714 if (dokumentTxt = '') then
5715 dokumentTxt := 'Uden navn';
5716
5717 if (tjektype = 'Opstart') or (tjektype = 'Test') then
5718 begin
5719 logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',
5720 [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);
5721 ListBox1.Items.Insert(0,logTekst);
5722 SkrivScanningLogFil(logTekst);
5723 end;
5724
5725 if (i = 0) then
5726 begin
5727 PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;
5728 PrinterstatusStaticText1.Font.Color := clBlack;
5729 PrinterstatusStaticText1.Color := MainForm.Color;
5730 PrinterstatusStaticText1.Transparent := True;
5731 if (numJobs > 3) then
5732 begin
5733 PrinterstatusStaticText1.Font.Color := clRed;
5734 PrinterstatusStaticText1.Color := clWhite;
5735 PrinterstatusStaticText1.Transparent := true;
5736 end;
5737 end;
5738
5739 end;
5740 end
5741 finally
5742 ClosePrinter(hPrinter);
5743 end;
5744 end;
5745 end;
5746
5747 function TMainForm.CheckUrl(url:string):boolean;
5748 var
5749 hSession, hfile, hRequest: hInternet;
5750 dwindex,dwcodelen :dword;
5751 dwcode:array[1..20] of char;
5752 res : pchar;
5753 begin
5754 if pos('http://',lowercase(url))=0 then
5755 url := 'http://'+url;
5756 Result := false;
5757 hSession := InternetOpen('InetURL:/1.0',
5758 INTERNET_OPEN_TYPE_PRECONFIG,
5759 nil,
5760 nil,
5761 0);
5762 if assigned(hsession) then
5763 begin
5764 hfile := InternetOpenUrl(hsession,
5765 pchar(url),
5766 nil,
5767 0,
5768 INTERNET_FLAG_RELOAD,
5769 0);
5770 dwIndex := 0;
5771 dwCodeLen := 10;
5772 HttpQueryInfo(hfile,
5773 HTTP_QUERY_STATUS_CODE,
5774 @dwcode,
5775 dwcodeLen,
5776 dwIndex);
5777 res := pchar(@dwcode);
5778 result:= (res ='200') or (res ='302');
5779 if assigned(hfile) then
5780 InternetCloseHandle(hfile);
5781 InternetCloseHandle(hsession);
5782 end;
5783
5784 end;
5785
5786 // 20150310: start
5787 procedure TMainForm.RoundCornerOf(Control: TWinControl);
5788 var
5789 R: TRect;
5790 Rgn: HRGN;
5791 begin
5792 with Control do
5793 begin
5794 R := ClientRect;
5795 // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;
5796 rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;
5797 // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;
5798 Perform(EM_GETRECT, 0, lParam(@r)) ;
5799 InflateRect(r, - 4, - 4) ;
5800 Perform(EM_SETRECTNP, 0, lParam(@r)) ;
5801 SetWindowRgn(Handle, rgn, True) ;
5802 Invalidate;
5803 end;
5804 end;
5805 // 20150310: slut
5806
5807 end.
5808

  ViewVC Help
Powered by ViewVC 1.1.20