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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20