/[projects]/Main.pas
ViewVC logotype

Contents of /Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2645 - (show annotations) (download)
Thu Aug 20 20:12:11 2015 UTC (8 years, 9 months ago) by torben
File size: 202026 byte(s)


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

  ViewVC Help
Powered by ViewVC 1.1.20