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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20