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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2656 - (show annotations) (download)
Sun Aug 23 13:09:14 2015 UTC (8 years, 8 months ago) by torben
File size: 198598 byte(s)
Comment cleanup

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

  ViewVC Help
Powered by ViewVC 1.1.20