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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2658 - (show annotations) (download)
Sun Aug 23 14:08:08 2015 UTC (8 years, 8 months ago) by torben
File size: 194021 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 VisAlarmSkaerm(List1msg);
1477
1478 exit;
1479 end;
1480
1481 if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then
1482 begin
1483 GemStregkode := Stregkode;
1484 if Pakketype = 'NatXpress' then
1485 begin
1486 if Scanningtype <> '1' then
1487 begin
1488 Scanningtype := '1';
1489 InitNatxpresslevering();
1490 end;
1491 end
1492 // Retur kan ikke scannes med 'Automatisk valg'
1493
1494 else if Pakketype = 'Direkte' then
1495 begin
1496 if Scanningtype <> '4' then
1497 begin
1498 Scanningtype := '4';
1499 InitDirektelevering();
1500 end;
1501 end
1502 else if Pakketype = 'Pakkeshop' then
1503 begin
1504 if Scanningtype <> '5' then
1505 begin
1506 Scanningtype := '5';
1507 InitPakkeshoplevering();
1508 end;
1509 end
1510 // Retur kan ikke scannes med 'Automatisk valg'
1511
1512 else
1513 begin // Her skal komme en alarm og rød skærm
1514 PlaySound(PWideChar(AlarmLyd));
1515 List1msg := 'Pakken kan ikke scannes med automatisk valg';
1516 ListBox1.Items.Insert(0,List1Msg);
1517 MainForm.Color := clRed;
1518
1519 RuteNummerST.Caption := '';
1520 BoghandlerNavnST.Caption := '';
1521
1522 KommentarST.Caption := List1msg;
1523 PakkeshopNulstil.Visible := true;
1524
1525 StregKode := '';
1526 StregkodeST.Caption := StregKode;
1527
1528 exit;
1529 end;
1530 Stregkode := GemStregkode;
1531 end
1532 else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1533 begin
1534 PlaySound(PWideChar(AlarmLyd));
1535 List1msg := 'Pakkenummer ikke gyldigt (for kort)';
1536 ListBox1.Items.Insert(0,List1Msg);
1537 MainForm.Color := clRed;
1538
1539 RuteNummerST.Caption := '';
1540 BoghandlerNavnST.Caption := '';
1541
1542 KommentarST.Caption := List1msg;
1543 PakkeshopNulstil.Visible := true;
1544
1545 StregKode := '';
1546 StregkodeST.Caption := StregKode;
1547
1548 exit;
1549 end;
1550
1551 if not Automatiskvalg1.Checked then
1552 begin
1553 if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1554 begin
1555 PlaySound(PWideChar(AlarmLyd));
1556 List1msg := 'Pakke findes som pakketype: ' + Pakketype;
1557 ListBox1.Items.Insert(0,List1Msg);
1558 MainForm.Color := clRed;
1559
1560 RuteNummerST.Caption := '';
1561 BoghandlerNavnST.Caption := '';
1562
1563 KommentarST.Caption := List1msg;
1564 PakkeshopNulstil.Visible := true;
1565 StregKode := '';
1566 StregkodeST.Caption := StregKode;
1567 exit;
1568 end;
1569 end;
1570
1571
1572
1573 if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1574 begin
1575 chkScanTjekkode.Checked := false;
1576 for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1577 begin
1578 if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1579 begin
1580 chkScanTjekkode.Checked := true;
1581 Scanogstjekkoden1.Checked := true;
1582 end;
1583 end;
1584 end;
1585
1586 if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then
1587 begin
1588 // Når vi ikke kræver tjekkode er alt ok her
1589 BoghandlerStregkode := Stregkode;
1590 BoghandlerTjekkode := '';
1591 PakkeshopText1.Caption := 'Stregkode';
1592 PakkeshopNulstil.Visible := false;
1593 Stregkode := '';
1594 InitScreen();
1595 end
1596 else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then
1597 begin
1598 // Når vi ikke kræver tjekkode er alt ok her
1599 PakkeshopStregkode := Stregkode;
1600 PakkeshopTjekkode := '-1';
1601 BoghandlerStregkode := Stregkode;
1602 BoghandlerTjekkode := '-1';
1603 PakkeshopText1.Caption := 'Stregkode';
1604 PakkeshopNulstil.Visible := false;
1605 Stregkode := '';
1606 InitScreen();
1607 end
1608 else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then
1609 if PakkeshopText1.Caption = 'Stregkode' then
1610 begin
1611 if length(Stregkode) > 5 then
1612 begin
1613 PakkeshopStregkode := Stregkode;
1614 BoghandlerStregkode := Stregkode;
1615 PakkeshopText1.Caption := 'Tjekkode';
1616 // 20150317: start
1617 PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1618 // 20150317: slut
1619 end
1620 else
1621 begin
1622 List1msg := 'Du skal scanne en stregkode';
1623 ListBox1.Items.Insert(0,List1Msg);
1624 //logTekst := RightStr(List1Msg, Length(List1Msg)-10);
1625 //SkrivScanningLogFil(logTekst);
1626 PlaySound(PWideChar(AlarmLyd));
1627 PakkeshopNulstil.Visible := true;
1628 MainForm.Color := clRed;
1629 end;
1630 Stregkode := '';
1631 InitScreen();
1632 end
1633 else
1634 begin
1635 if length(Stregkode) = 5 then
1636 begin
1637 PakkeshopTjekkode := Stregkode;
1638 BoghandlerTjekkode := Stregkode;
1639 PakkeshopText1.Caption := 'Stregkode';
1640 if (PakkeshopLevering1.Checked) then
1641 MainForm.Color := HexToTColor(FarvePakkeshoplevering);
1642 if (Pakkernormal1.Checked) then
1643 MainForm.Color := HexToTColor(FarveNormal);
1644 PakkeshopNulstil.Visible := false;
1645 end
1646 else
1647 begin
1648 if (PakkeshopLevering1.Checked) then
1649 List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;
1650 if (Pakkernormal1.Checked) then
1651 List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;
1652 KommentarST.Caption := List1msg;
1653 ListBox1.Items.Insert(0,List1Msg);
1654 //logTekst := RightStr(List1Msg, Length(List1Msg)-10);
1655 //SkrivScanningLogFil(logTekst);
1656 PlaySound(PWideChar(AlarmLyd));
1657 PakkeshopNulstil.Visible := true;
1658 MainForm.Color := clRed;
1659 // 20150323: start
1660 StregKode := '';
1661 StregkodeST.Caption := StregKode;
1662 // 20150323: slut
1663 exit;
1664 end;
1665 Stregkode := '';
1666 InitScreen();
1667 end;
1668
1669 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
1670 begin
1671 if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1672 StregKode := PakkeshopStregkode;
1673 if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1674 StregKode := BoghandlerStregkode;
1675 StregkodeST.Caption := StregKode;
1676 try
1677 InitScreen();
1678 HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, '');
1679 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
1680 // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1681 if Rutenummer = 'sql fejl' then
1682 begin // Her skal komme en alarm og rød skærm
1683 PlaySound(PWideChar(AlarmLyd));
1684 //List1msg := 'SQL fejl: ' + Kommentar;
1685 //ListBox1.Items.Insert(0,List1Msg);
1686 MainForm.Color := clRed;
1687 //KommentarST.Caption := List1msg;
1688 PakkeshopNulstil.Visible := true;
1689 exit;
1690 end;
1691 if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
1692 begin
1693 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1694 pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
1695 if pakkeErScannet = 0 then
1696 begin
1697 pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
1698 end;
1699 if pakkeErScannet = 0 then
1700 begin
1701 pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
1702 end;
1703 pakkeForkertSted := pos('burde være hos', Kommentar);
1704 tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1705 if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1706 begin
1707 PlaySound(PWideChar(AlarmLyd));
1708 PakkeshopNulstil.Visible := true;
1709 MainForm.Color := clRed;
1710 end;
1711 end;
1712 if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1713 begin
1714 MainForm.Color := HexToTColor(Farve);
1715 if Storepakker1.Checked then
1716 begin
1717 PlaySound(PWideChar(ScannetOkStorLyd));
1718 end
1719 else
1720 begin
1721 PlaySound(PWideChar(ScannetOkLyd));
1722 end;
1723 PakkeshopNulstil.Visible := false;
1724 end
1725 else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1726 begin
1727 MainForm.Color := HexToTColor(Farve);
1728 if Storepakker1.Checked then
1729 begin
1730 PlaySound(PWideChar(ScannetOkStorLyd));
1731 end
1732 else
1733 begin
1734 PlaySound(PWideChar(ScannetOkLyd));
1735 end;
1736 PakkeshopNulstil.Visible := false;
1737 end
1738 else if Copy(Kommentar,1,8) = 'OPRETTET' then
1739 begin
1740 List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';
1741 ListBox1.Items.Insert(0,List1Msg);
1742 MainForm.Color := clRed;
1743 PlaySound(PWideChar(AlarmLyd));
1744 PakkeshopNulstil.Visible := true;
1745 end
1746 else if Kommentar = StregKode then // budlevering til 'Ukendt tur'
1747 begin
1748 end
1749 else
1750 begin
1751 MainForm.Color := clRed;
1752 PlaySound(PWideChar(AlarmLyd));
1753 PakkeshopNulstil.Visible := true;
1754 end;
1755 if not PakkeshopNulstil.Visible then
1756 begin
1757 // 20150310: start
1758 // SletStregkodelinieFraListboks2(StregKode);
1759 // 20150310: slut
1760 If (Budlevering1.Checked) then
1761 begin
1762 if Storepakker1.Checked then
1763 begin
1764 PlaySound(PWideChar(ScannetOkStorLyd));
1765 end
1766 else
1767 begin
1768 PlaySound(PWideChar(ScannetOkLyd));
1769 end;
1770 InitLillePakke();
1771 end;
1772 end;
1773 // 20150310: start
1774 SletStregkodelinieFraListboks2(StregKode);
1775 // 20150310: slut
1776 PakkeshopStregkode := '';
1777 PakkeshopTjekkode := '';
1778 BoghandlerStregkode := '';
1779 BoghandlerTjekkode := '';
1780 finally
1781 Stregkode := '';
1782 end
1783 end
1784 end
1785 else
1786 begin
1787 if (Key <> #22) then
1788 begin
1789 Stregkode := Stregkode + Key;
1790 end;
1791 StregkodeST.Caption := StregKode;
1792 end;
1793
1794 if Key = #8 then // backspace key
1795 begin
1796 StregKode := LeftStr(StregKode,Length(StregKode)-2);
1797 end;
1798
1799 if Key = #27 then // esc key
1800 begin
1801 Stregkode := '';
1802 end;
1803
1804 Key := #0;
1805
1806 end; //End of OnKeyPress
1807
1808 procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1809 const
1810 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
1811 var
1812 WebSvar : String;
1813 URLStr : String;
1814 begin
1815 if UrlSendPrograminfo <> '' then
1816 begin
1817 URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1818 try
1819 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1820 WebSvar := IdHTTP1.Get(URLStr);
1821 //IdHTTP1.Disconnect();
1822 except on e:exception do
1823 begin
1824 // ShowMessage(e.Message);
1825 // raise exception.CreateFmt('Fejl i forbindelse til server: %s',[e.Message]);
1826 logTekst := 'Der er opstået en fejl i kommunikationen med serveren.' + crlf + crlf + 'Programmet afsluttes... ' + crlf + crlf + 'Program rutine: SendTilServeren' + crlf + 'Fejl: ' + e.Message;
1827 ShowMessage(logTekst);
1828 SkrivScanningLogFil(logTekst);
1829 // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1830 UrlSendPrograminfo := '';
1831 Application.Terminate;
1832 end;
1833 end;
1834 if (WebSvar <> '') and (pos('Error', WebSvar) > 0) then
1835 begin
1836 ShowMessage(WebSvar);
1837 end;
1838 end;
1839 end;
1840
1841 procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1842 var
1843 i : Integer;
1844 wrkAntal : String;
1845 wrkAntalIdag, wrkAntalSenere : Integer;
1846
1847
1848 begin
1849 if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then
1850 begin
1851 for i := ListBox2.items.count-1 downto 0 do
1852 if pos(StregKode,ListBox2.items[i]) <> 0 then
1853 begin
1854
1855 // Ajourføring af tæller for manglende pakker (scanninger)
1856 wrkAntal := StaticTextManglendePakker.Caption;
1857 if (pos('/', wrkAntal) > 0) then // både pakker idag og senere
1858 begin
1859 wrkAntal := wrkAntal + '/'; // tilføjer '/' sidst i feltet af hensyn til split funktionen
1860 wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));
1861 // ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1862 // ShowMessage(SPLIT('data/another/','/',3));
1863 // ShowMessage(SPLIT('data/another','/',3));
1864 wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));
1865 end
1866 else // kun idag
1867 begin
1868 wrkAntalIdag := StrToInt(wrkAntal);
1869 end;
1870 if pos(StregKode + ' (',ListBox2.items[i]) <> 0 then // pakke til senere levering
1871 begin
1872 //ShowMessage('Senere ' + IntToStr(wrkAntalIdag) + ' ' + IntToStr(wrkAntalSenere));
1873 wrkAntalSenere := wrkAntalSenere - 1;
1874 // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1875 end
1876 else
1877 begin
1878 // ShowMessage('Idag');
1879 wrkAntalIdag := wrkAntalIdag - 1;
1880 // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1881 end;
1882 if (wrkAntalSenere > 0) then
1883 begin
1884 StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1885 end
1886 else
1887 begin
1888 StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1889 end;
1890
1891 if (Scanningtype = '1') then
1892 begin
1893 PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1894 if (wrkAntalIdag + wrkAntalSenere > 0) then
1895 begin
1896 PanelManglendePakker1.Visible := true;
1897 end
1898 else
1899 begin
1900 PanelManglendePakker1.Visible := false;
1901 end;
1902 end;
1903
1904 if (Scanningtype = '2') then
1905 begin
1906 PanelManglendePakker2.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1907 if (wrkAntalIdag + wrkAntalSenere > 0) then
1908 begin
1909 PanelManglendePakker2.Visible := true;
1910 end
1911 else
1912 begin
1913 PanelManglendePakker2.Visible := false;
1914 end;
1915 end;
1916
1917 if (Scanningtype = '3') then
1918 begin
1919 PanelManglendePakker3.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1920 if (wrkAntalIdag + wrkAntalSenere > 0) then
1921 begin
1922 PanelManglendePakker3.Visible := true;
1923 end
1924 else
1925 begin
1926 PanelManglendePakker3.Visible := false;
1927 end;
1928 end;
1929
1930 if (Scanningtype = '4') then
1931 begin
1932 PanelManglendePakker4.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1933 if (wrkAntalIdag + wrkAntalSenere > 0) then
1934 begin
1935 PanelManglendePakker4.Visible := true;
1936 end
1937 else
1938 begin
1939 PanelManglendePakker4.Visible := false;
1940 end;
1941 end;
1942
1943 if (Scanningtype = '5') then
1944 begin
1945 PanelManglendePakker5.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1946 if (wrkAntalIdag + wrkAntalSenere > 0) then
1947 begin
1948 PanelManglendePakker5.Visible := true;
1949 end
1950 else
1951 begin
1952 PanelManglendePakker5.Visible := false;
1953 end;
1954 end;
1955
1956 if (Scanningtype = '6') then
1957 begin
1958 PanelManglendePakker6.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1959 if (wrkAntalIdag + wrkAntalSenere > 0) then
1960 begin
1961 PanelManglendePakker6.Visible := true;
1962 end
1963 else
1964 begin
1965 PanelManglendePakker6.Visible := false;
1966 end;
1967 end;
1968 // 20150310: slut
1969 ListBox2.items.delete(i);
1970 end;
1971 end;
1972 end;
1973
1974 procedure TMainForm.StartScreen();
1975 begin
1976 if Org_RuteNummerST = '' then
1977 Org_RuteNummerST := RuteNummerST.Caption;
1978 if Org_BoghandlerNavnST = '' then
1979 Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
1980 if Org_KommentarST = '' then
1981 Org_KommentarST := KommentarST.Caption;
1982 RuteNummerST.Caption := Org_RuteNummerST;
1983 BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
1984 KommentarST.Caption := Org_KommentarST;
1985 end;
1986
1987 procedure TMainForm.InitScreen();
1988 begin
1989 RuteNummerST.Caption := '';
1990 KommentarST.Caption := '';
1991 BoghandlerNavnST.Caption := '';
1992 end;
1993
1994 procedure TMainForm.InitBladhus();
1995 var
1996 LogFilnavn : string;
1997
1998 begin
1999 Altidprintepakkelabel1.Enabled := false;
2000 Pakkernormal1.Visible := false;
2001 ReturpakkerfraDAO1.Visible := false;
2002 Returpakkerfraboghandler1.Visible := false;
2003 Sprgefterboghandlernummer1.Enabled := false;
2004 ListBox1.Visible := true;
2005 // TestFunktionen := '1';
2006 // 20150317: start
2007 (*
2008 if TestFunktionen = '1' then
2009 begin
2010 Testforbindelsen1.Visible := true;
2011 Testprinter1.Visible := true;
2012 Testlyd1.Visible := true;
2013 Testlyd2.Visible := true;
2014 end
2015 else if TestFunktionen = '2' then
2016 begin
2017 Testforbindelsen1.Enabled := false;
2018 Testprinter1.Enabled := false;
2019 Testlyd1.Enabled := false;
2020 Testlyd2.Enabled := false;
2021 end
2022 else
2023 begin
2024 Testforbindelsen1.Visible := false;
2025 Testprinter1.Visible := false;
2026 Testlyd1.Visible := false;
2027 Testlyd2.Visible := false;
2028 end;
2029 Testprinter1.Visible := false;
2030 AlarmLyd := 'Sounds\Alarm.wav';
2031 if not FileExists(AlarmLyd) then
2032 begin
2033 AlarmLyd := '';
2034 end;
2035 ScannetOkLyd := 'Sounds\Ok.wav';
2036 if not FileExists(ScannetOkLyd) then
2037 begin
2038 ScannetOkLyd := '';
2039 end;
2040 ScannetOkStorLyd := 'Sounds\Ok_stor.wav';
2041 if not FileExists(ScannetOkStorLyd) then
2042 begin
2043 ScannetOkStorLyd := '';
2044 end;
2045 *)
2046 // 20150317: slut
2047 if Budlevering1.Checked then
2048 begin
2049 IndlesScanningLogFil();
2050 end;
2051
2052 //
2053 // Bladhus ***
2054 //
2055 case BladhusSted of
2056 01 :
2057 begin; // NS
2058 Testprinter1.Visible := true;
2059 DownloadButton01.Enabled := true;
2060 OpdaterListenButton01.Enabled := true;
2061 IdFTP1.Passive := true;
2062 IdFTP1.PassiveUseControlHost := true;
2063 BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
2064 BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2065 DownloadBladhusKontrolfil();
2066 IndlesManglendeScanninger();
2067 end;
2068 02 :
2069 begin; // BK
2070 Testprinter1.Visible := true;
2071 Smpakker1.Enabled := true;
2072 Storepakker1.Enabled := true;
2073 radioStorPakke.Enabled := true;
2074 radioLillePakke.Enabled := true;
2075 DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2076 OpdaterListenButton01.Enabled := true;
2077 IdFTP1.Passive := true;
2078 IdFTP1.PassiveUseControlHost := true;
2079 IndlesManglendeScanninger();
2080 end;
2081 03 :
2082 begin; // FD
2083 Testprinter1.Visible := true;
2084 if (getProddag() = 'lørdag') then
2085 begin
2086 DownloadButton03.Visible := false;
2087 end
2088 else
2089 begin
2090 DownloadButton03.Visible := false;
2091 end;
2092 DownloadButton01.Enabled := true;
2093 OpdaterListenButton01.Enabled := true;
2094 IdFTP1.Passive := true;
2095 IdFTP1.PassiveUseControlHost := true;
2096 BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
2097 BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
2098 if (getProddag() = 'lørdag') then
2099 begin
2100 //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
2101 end;
2102 BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
2103 BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2104 DownloadBladhusKontrolfil();
2105 IndlesManglendeScanninger();
2106 end;
2107 04 : begin; // DBK
2108 Testprinter1.Visible := true;
2109 Smpakker1.Enabled := true;
2110 Storepakker1.Enabled := true;
2111 radioStorPakke.Enabled := true;
2112 radioLillePakke.Enabled := true;
2113 DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2114 OpdaterListenButton01.Enabled := true;
2115 IdFTP1.Passive := true;
2116 IdFTP1.PassiveUseControlHost := true;
2117 end;
2118 else
2119 //ShowMessage('Ukendt Bladhus sted ???') ;
2120 end;
2121
2122 end;
2123
2124 procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
2125 var
2126 WebSvar : String;
2127 URLStr : String;
2128 pakkestorrelse : String;
2129 PrintNyLabelInteger : Integer;
2130 begin
2131 if radioStorPakke.Checked then
2132 begin
2133 pakkestorrelse := 'Stor';
2134 end;
2135 if radioLillePakke.Checked then
2136 begin
2137 pakkestorrelse := 'Lille';
2138 end;
2139 if Pakkernormal1.Checked then
2140 begin
2141 if (BoghandlerTjekkode = '') then
2142 begin
2143 BoghandlerTjekkode := '-1';
2144 end;
2145 URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2146 end
2147 else if ReturpakkerfraDAO1.Checked then
2148 begin
2149 URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2150 end
2151 else if Returpakkerfraboghandler1.Checked then
2152 begin
2153 URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2154 end
2155 else if Budlevering1.Checked then
2156 begin
2157 URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2158 end
2159 else if Pakkeshoplevering1.Checked then
2160 begin
2161 URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2162 end
2163 else if Returpakkerfrapakkeshop1.Checked then
2164 begin
2165 URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2166 end
2167 else
2168 begin
2169 exit;
2170 end;
2171 try
2172 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2173 WebSvar := IdHTTP1.Get(URLStr);
2174 //IdHTTP1.Disconnect();
2175 except on e:EIdConnClosedGracefully do
2176 begin
2177 // Her skal vi ikke gøre noget - men vi skal forespørge igen
2178 logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer';
2179 SkrivScanningLogFil(logTekst);
2180 try
2181 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2182 WebSvar := IdHTTP1.Get(URLStr);
2183 except on e:EIdConnClosedGracefully do
2184 begin
2185 logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer igen';
2186 SkrivScanningLogFil(logTekst);
2187 WebSvar := IdHTTP1.Get(URLStr);
2188 end;
2189 end;
2190 end;
2191 end;
2192 XMLDocument1.LoadFromXML(WebSvar);
2193 try
2194 if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
2195 begin
2196 RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2197 Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2198 BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2199 BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2200 PrintNyLabel := False;
2201
2202 if Pakkeshoplevering1.Checked then
2203 begin
2204 try
2205 PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2206 except on e:exception do
2207 PrintNyLabelInteger := 0;
2208 end;
2209 if (PrintNyLabelInteger = 1) then
2210 begin
2211 PrintNyLabel := True;
2212 end;
2213 // 20150310: start
2214 end;
2215 // 20150310: slut
2216 end
2217 else
2218 begin
2219 RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2220 Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2221 Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2222 BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2223 Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2224 if Budlevering1.Checked then
2225 begin
2226 try
2227 SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2228 except on e:exception do
2229 SmsKode := '';
2230 end;
2231 try
2232 DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2233 except on e:exception do
2234 DBKbane := '';
2235 end;
2236 end;
2237 PrintNyLabel := False;
2238 try
2239 PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2240 except on e:exception do
2241 PrintNyLabelInteger := 0;
2242 end;
2243 PrintNyLabel := False;
2244 if (PrintNyLabelInteger = 1) then
2245 begin
2246 PrintNyLabel := True;
2247 end;
2248 end;
2249 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2250 begin
2251 if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2252 begin
2253 Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2254 PrintNyLabel := False;
2255 end;
2256 end
2257 else if (Budlevering1.Checked) and (Leveringssted <> Sted) then
2258 begin
2259 if (Leveringssted = 'E') and (Sted = 'DBK') then
2260 begin
2261 // Det er ok at DBK scanner pakker til E (Schenker)
2262 end
2263 else
2264 begin
2265 Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2266 PrintNyLabel := False;
2267 end;
2268 end;
2269 except on e:exception do
2270 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2271 end;
2272 end;
2273
2274
2275 procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2276 var
2277 List1Msg, List1Pakkestorrelse : String;
2278 begin
2279 RuteNummerST.Caption := RuteNummer;
2280 KommentarST.Caption := Kommentar;
2281 KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2282 KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2283 //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2284 BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2285 List1msg := TimeToStr(now) + '; ';
2286 if Pakkeshoplevering1.Checked then
2287 List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2288 List1Pakkestorrelse := '';
2289 if radioStorPakke.Checked then
2290 begin
2291 List1Pakkestorrelse := 'Stor pakke';
2292 end;
2293 if radioLillePakke.Checked then
2294 begin
2295 List1Pakkestorrelse := 'Lille pakke';
2296 end;
2297 List1msg := List1msg + BoghandlerNavn + '; ';
2298 if ReturpakkerfraDAO1.Checked then
2299 begin
2300 List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2301 end;
2302 if Returpakkerfraboghandler1.Checked then
2303 begin
2304 List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2305 end;
2306 if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then
2307 List1msg := List1msg + '; ' + List1Pakkestorrelse;
2308 if length(BoghNr) > 0 then
2309 begin
2310 List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2311 end;
2312 if Budlevering1.Checked then
2313 begin
2314 List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2315 if (radioStorPakke.Checked) then
2316 begin
2317 List1msg := List1msg + '; Stor pakke';
2318 end;
2319 if (radioLillePakke.Checked) then
2320 begin
2321 List1msg := List1msg + '; Lille pakke';
2322 end;
2323 end;
2324 if Returpakkerfrapakkeshop1.Checked then
2325 begin
2326 List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2327 end;
2328 if Pakkernormal1.Checked then
2329 begin
2330 if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2331 or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2332 or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2333 begin
2334 List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2335 end
2336 else
2337 begin
2338 List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2339 end;
2340 end;
2341 ListBox1.Items.Insert(0,List1Msg);
2342 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2343 SkrivScanningLogFil(logTekst);
2344 end;
2345
2346 procedure TMainForm.UploadButton01Click(Sender: TObject);
2347 begin
2348 UploadLogfilTilDAO();
2349 UploadInifilTilDAO();
2350 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2351 end;
2352
2353 procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2354 var
2355 ClickedOK: Boolean;
2356 pakkeErScannet : Integer;
2357 pakkeForkertSted : Integer;
2358 List1Msg : String;
2359 kontrolKoreliste : string;
2360 nytRuteNummer, nyFarve : String;
2361 begin
2362 if Budlevering1.Checked then
2363 RuteNummerST.Color := HexToTColor(Farve);
2364
2365 pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2366 if pakkeErScannet = 0 then
2367 begin
2368 pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2369 end;
2370 if pakkeErScannet = 0 then
2371 begin
2372 pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2373 end;
2374 pakkeForkertSted := pos('burde være hos', Kommentar);
2375
2376
2377 if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2378
2379 begin
2380 if (RuteNummer = 'Ukendt') then
2381 begin
2382 repeat
2383 begin
2384 ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2385 end
2386 until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2387 if not ClickedOK then
2388 begin
2389 exit;
2390 end;
2391 if (Length(BoghandlerNummer) > 2) then
2392 begin
2393 InitScreen();
2394 HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2395 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2396 end;
2397 end;
2398 end
2399 else
2400 if Budlevering1.Checked then
2401 begin
2402 if (BoghandlerNavn = 'Ukendt pakke') then
2403 begin
2404 PrintNyLabel := false;
2405
2406 PlaySound(PWideChar(AlarmLyd));
2407 MainForm.Color := clRed;
2408 PakkeshopNulstil.Visible := true;
2409
2410 end
2411 else
2412 begin
2413 nytRuteNummer := retRutenummer(RuteNummer);
2414 if (nytRuteNummer <> RuteNummer) then
2415 begin
2416 PrintNyLabel := true;
2417 RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2418 nyFarve := Farve;
2419 RuteNummerST.Color := HexToTColor(nyFarve);
2420 List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2421 RuteNummer := nytRuteNummer;
2422 ListBox1.Items.Insert(0,List1Msg);
2423 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2424 SkrivScanningLogFil(logTekst);
2425
2426 if (PrinterNavn = 'Ingen') then
2427 begin
2428 PrintNyLabel := false;
2429 end;
2430
2431 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2432 begin
2433 PlaySound(PWideChar(AlarmLyd));
2434 MainForm.Color := clRed;
2435 PakkeshopNulstil.Visible := true;
2436 end;
2437
2438 end;
2439 kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2440 if (kontrolKoreliste <> RuteNummer) then
2441 begin
2442 PrintNyLabel := true;
2443 List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2444 if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2445 begin
2446 PrintNyLabel := false;
2447 RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2448 end
2449 else
2450 begin
2451 RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2452 end;
2453 ListBox1.Items.Insert(0,List1Msg);
2454 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2455 SkrivScanningLogFil(logTekst);
2456
2457 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2458 begin
2459 PlaySound(PWideChar(AlarmLyd));
2460 MainForm.Color := clRed;
2461 PakkeshopNulstil.Visible := true;
2462 end;
2463
2464 end;
2465 end;
2466
2467 end;
2468
2469 if Budlevering1.Checked then
2470 begin
2471 case BladhusSted of
2472 00 : begin;
2473 // 20150304: start
2474 // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2475 // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2476 // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2477 // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2478 if PrintNyLabel or (RuteNummer = 'Rutenr') then
2479 // 20150304: slut
2480 begin
2481 SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2482 end;
2483 end;
2484 01 : begin;
2485 if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2486 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2487 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2488 begin
2489 SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2490 end;
2491 end;
2492 02 : begin;
2493 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2494 begin
2495 SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2496 end;
2497 end;
2498 03 : begin;
2499 if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2500 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2501 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2502 begin
2503 SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2504 end;
2505 end;
2506 04 : begin;
2507 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2508 begin
2509 SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2510 end;
2511 end;
2512 else
2513 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2514 end;
2515 end;
2516
2517 // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2518 if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2519 begin
2520 exit;
2521 end;
2522
2523 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
2524 begin
2525 end
2526 else
2527 begin
2528 if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2529 begin
2530 logTekst := 'Printer label type ';
2531 if (chkAltidPrintLabel.Checked) then
2532 begin
2533 logTekst := logTekst + 'Alle ';
2534 end
2535 else if (PrintNyLabel) then
2536 begin
2537 logTekst := logTekst + 'Rute ';
2538 end
2539 else
2540 begin
2541 logTekst := logTekst + 'Ukendt ';
2542 end;
2543 logTekst := logTekst + ' for '+BoghandlerNavn;
2544 SkrivScanningLogFil(logTekst);
2545 with Printer do
2546 begin
2547 BeginDoc;
2548 Canvas.Font.Size := FontSizeRute;
2549 if (Length(RuteNummer) > 7) then
2550 begin
2551 Canvas.Font.Size := FontSizeRuteLille;
2552 end;
2553 Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2554 Canvas.Font.Size := FontSizeKommentar;
2555 Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2556 if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then
2557 begin
2558 Kommentar := '';
2559 end;
2560 if (BoghandlerNavn = 'PAKKE ER SCANNET') then
2561 begin
2562 BoghandlerNavn := '';
2563 end;
2564 Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2565 Canvas.Font.Size := FontSizeBoghandler;
2566 Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2567 EndDoc;
2568 end;
2569 end;
2570 end;
2571
2572 end;
2573
2574 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2575 begin
2576 with Printer do
2577 begin
2578 BeginDoc;
2579 Canvas.Font.Size := FontSizeRuteLille;
2580 if (kontrolKoreliste <> '') then
2581 begin
2582 Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);
2583 end
2584 else
2585 begin
2586 Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2587 end;
2588 Canvas.Font.Size := FontSizeKorelisteLille;
2589 Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);
2590 if (Sted = 'DBK') or (Sted = '04') then
2591 begin
2592 Canvas.Font.Size := FontSizeSorteringsfelt1;
2593 Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane); // sorteringsoplysning 1
2594 Canvas.Font.Size := FontSizeSorteringsfelt1;
2595 Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted); // sorteringsoplysning 2
2596 end;
2597 Canvas.Font.Size := FontSizeKommentar;
2598
2599 Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2600 Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);
2601
2602 Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2603 if SmsKode <> '' then
2604 begin
2605 Canvas.Font.Size := FontSizeSmskode;
2606 Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));
2607 end;
2608 Canvas.Font.Size := FontSizeBoghandler;
2609 Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2610 EndDoc;
2611 end;
2612 end;
2613
2614
2615 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2616 begin
2617 Storepakker1.Checked := true;
2618 radioStorPakke.Checked := true;
2619 end;
2620
2621 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2622 begin
2623 Smpakker1.Checked := true;
2624 radioLillePakke.Checked := true;
2625 end;
2626
2627
2628 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2629 begin
2630 if chkSporgEfterKunde.Checked then
2631 begin
2632 Sprgefterboghandlernummer1.Checked := true;
2633 end
2634 else
2635 begin
2636 Sprgefterboghandlernummer1.Checked := false;
2637 end;
2638 end;
2639
2640
2641 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2642 begin
2643 if chkAltidPrintLabel.Checked then
2644 begin
2645 Altidprintepakkelabel1.Checked := true;
2646 end
2647 else
2648 begin
2649 Altidprintepakkelabel1.Checked := false;
2650 end;
2651
2652 end;
2653
2654 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2655 begin
2656 if chkScanTjekkode.Checked then
2657 begin
2658 Scanogstjekkoden1.Checked := true;
2659 end
2660 else
2661 begin
2662 Scanogstjekkoden1.Checked := false;
2663 end;
2664 end;
2665
2666 procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);
2667 begin
2668 Scanningtype := '5';
2669 InitPakkeshoplevering();
2670 NulstilAutomatiskValg();
2671 end;
2672
2673 procedure TMainForm.NulstilAutomatiskValg();
2674 begin
2675 Automatiskvalg1.Checked := false;
2676 PanelValgA.Color := clBtnFace;
2677 PanelValgA.Font.Color := clWindowText;
2678
2679 if (SpecialVersionSted = '01')
2680 or (SpecialVersionSted = '02')
2681 or (SpecialVersionSted = '03')
2682 or (SpecialVersionSted = '04') then
2683 begin
2684 // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2685 PanelValgA.Enabled := false;
2686 PanelValgA.Font.Color := clInactiveCaption;
2687 Automatiskvalg1.Enabled := false;
2688 end;
2689 // 20150317: slut
2690 end;
2691
2692 procedure TMainForm.TjekkerUrls();
2693 const
2694 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2695 var
2696 urlFejl : Integer;
2697 begin
2698 urlFejl := 0;
2699 //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2700 ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2701
2702 // Tjekker urls
2703 logTekst := 'Tjekker urls.';
2704 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2705 SkrivScanningLogFil(logTekst);
2706
2707 // Tjekker UrlNormal
2708 if PanelValg1.Enabled = true then
2709 begin
2710 if CheckUrl(UrlNormal) then
2711 begin
2712 logTekst := 'UrlNormal accepteret: ' + UrlNormal;
2713 SkrivScanningLogFil(logTekst);
2714 end
2715 else
2716 begin
2717 inc(urlFejl); // Optæller antal fejl
2718 logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;
2719 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2720 if TjekUrls = '1' then
2721 begin
2722 TjekUrls := '-'; // markerer at der var fejl
2723 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2724 end;
2725 SkrivScanningLogFil(logTekst);
2726 if TjekUrls = '1' then
2727 begin
2728 ShowMessage(logTekst);
2729 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2730 Application.Terminate;
2731 exit;
2732 end;
2733 end;
2734 end;
2735
2736 // Tjekker UrlReturDAO
2737 if PanelValg2.Enabled = true then
2738 begin
2739 if CheckUrl(UrlReturDAO) then
2740 begin
2741 logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;
2742 SkrivScanningLogFil(logTekst);
2743 end
2744 else
2745 begin
2746 inc(urlFejl); // Optæller antal fejl
2747 logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
2748 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2749 if TjekUrls = '1' then
2750 begin
2751 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2752 end;
2753 SkrivScanningLogFil(logTekst);
2754 if TjekUrls = '1' then
2755 begin
2756 ShowMessage(logTekst);
2757 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2758 Application.Terminate;
2759 exit;
2760 end;
2761 end;
2762 end;
2763
2764 // Tjekker UrlReturBoghandler
2765 if PanelValg3.Enabled = true then
2766 begin
2767 if CheckUrl(UrlReturBoghandler) then
2768 begin
2769 logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;
2770 SkrivScanningLogFil(logTekst);
2771 end
2772 else
2773 begin
2774 inc(urlFejl); // Optæller antal fejl
2775 logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
2776 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2777 if TjekUrls = '1' then
2778 begin
2779 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2780 end;
2781 SkrivScanningLogFil(logTekst);
2782 if TjekUrls = '1' then
2783 begin
2784 ShowMessage(logTekst);
2785 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2786 Application.Terminate;
2787 exit;
2788 end;
2789 end;
2790 end;
2791
2792 // Tjekker UrlBudlevering
2793 if PanelValg4.Enabled = true then
2794 begin
2795 if CheckUrl(UrlBudlevering) then
2796 begin
2797 logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;
2798 SkrivScanningLogFil(logTekst);
2799 end
2800 else
2801 begin
2802 inc(urlFejl); // Optæller antal fejl
2803 logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;
2804 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2805 if TjekUrls = '1' then
2806 begin
2807 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2808 end;
2809 SkrivScanningLogFil(logTekst);
2810 if TjekUrls = '1' then
2811 begin
2812 ShowMessage(logTekst);
2813 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2814 Application.Terminate;
2815 exit;
2816 end;
2817 end;
2818 end;
2819
2820 // Tjekker UrlPakkeshoplevering
2821 if PanelValg5.Enabled = true then
2822 begin
2823 if CheckUrl(UrlPakkeshoplevering) then
2824 begin
2825 logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;
2826 SkrivScanningLogFil(logTekst);
2827 end
2828 else
2829 begin
2830 inc(urlFejl); // Optæller antal fejl
2831 logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;
2832 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2833 if TjekUrls = '1' then
2834 begin
2835 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2836 end;
2837 SkrivScanningLogFil(logTekst);
2838 if TjekUrls = '1' then
2839 begin
2840 ShowMessage(logTekst);
2841 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2842 Application.Terminate;
2843 exit;
2844 end;
2845 end;
2846 end;
2847
2848 // Tjekker UrlReturPakkeshop
2849 if PanelValg6.Enabled = true then
2850 begin
2851 if CheckUrl(UrlReturPakkeshop) then
2852 begin
2853 logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;
2854 SkrivScanningLogFil(logTekst);
2855 end
2856 else
2857 begin
2858 inc(urlFejl); // Optæller antal fejl
2859 logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;
2860 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2861 if TjekUrls = '1' then
2862 begin
2863 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2864 end;
2865 SkrivScanningLogFil(logTekst);
2866 if TjekUrls = '1' then
2867 begin
2868 ShowMessage(logTekst);
2869 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2870 Application.Terminate;
2871 exit;
2872 end;
2873 end;
2874 end;
2875
2876 // Tjekker UrlManglendeScanninger
2877 if (PanelValg1.Enabled = true)
2878 or (PanelValg4.Enabled = true) then
2879 begin
2880 if CheckUrl(UrlManglendeScanninger) then
2881 begin
2882 logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;
2883 SkrivScanningLogFil(logTekst);
2884 end
2885 else
2886 begin
2887 inc(urlFejl); // Optæller antal fejl
2888 logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;
2889 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2890 if TjekUrls = '1' then
2891 begin
2892 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2893 end;
2894 SkrivScanningLogFil(logTekst);
2895 if TjekUrls = '1' then
2896 begin
2897 ShowMessage(logTekst);
2898 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2899 Application.Terminate;
2900 exit;
2901 end;
2902 end;
2903 end;
2904
2905 // Tjekker UrlPakkeshopManglendeScanninger
2906 if PanelValg5.Enabled = true then
2907 begin
2908 if CheckUrl(UrlPakkeshopManglendeScanninger) then
2909 begin
2910 logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;
2911 SkrivScanningLogFil(logTekst);
2912 end
2913 else
2914 begin
2915 inc(urlFejl); // Optæller antal fejl
2916 logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;
2917 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2918 if TjekUrls = '1' then
2919 begin
2920 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2921 end;
2922 SkrivScanningLogFil(logTekst);
2923 if TjekUrls = '1' then
2924 begin
2925 ShowMessage(logTekst);
2926 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2927 Application.Terminate;
2928 exit;
2929 end;
2930 end;
2931 end;
2932
2933 // Tjekker UrlPakkeshopManglendeReturScanninger
2934 if PanelValg6.Enabled = true then
2935 begin
2936 if CheckUrl(UrlPakkeshopManglendeReturScanninger) then
2937 begin
2938 logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;
2939 SkrivScanningLogFil(logTekst);
2940 end
2941 else
2942 begin
2943 inc(urlFejl); // Optæller antal fejl
2944 logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;
2945 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2946 if TjekUrls = '1' then
2947 begin
2948 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2949 end;
2950 SkrivScanningLogFil(logTekst);
2951 if TjekUrls = '1' then
2952 begin
2953 ShowMessage(logTekst);
2954 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2955 Application.Terminate;
2956 exit;
2957 end;
2958 end;
2959 end;
2960
2961 // Tjekker UrlEKLoverforsel
2962 if PanelValg1.Enabled = true then
2963 begin
2964 if CheckUrl(UrlEKLoverforsel) then
2965 begin
2966 logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;
2967 SkrivScanningLogFil(logTekst);
2968 end
2969 else
2970 begin
2971 inc(urlFejl); // Optæller antal fejl
2972 logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;
2973 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2974 if TjekUrls = '1' then
2975 begin
2976 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2977 end;
2978 SkrivScanningLogFil(logTekst);
2979 if TjekUrls = '1' then
2980 begin
2981 ShowMessage(logTekst);
2982 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2983 Application.Terminate;
2984 exit;
2985 end;
2986 end;
2987 end;
2988
2989
2990 // Tjekker UrlEKLoverforselPakkeshop
2991 if PanelValg5.Enabled = true then
2992 begin
2993 if CheckUrl(UrlEKLoverforselPakkeshop) then
2994 begin
2995 logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;
2996 SkrivScanningLogFil(logTekst);
2997 end
2998 else
2999 begin
3000 inc(urlFejl); // Optæller antal fejl
3001 logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;
3002 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3003 if TjekUrls = '1' then
3004 begin
3005 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3006 end;
3007 SkrivScanningLogFil(logTekst);
3008 if TjekUrls = '1' then
3009 begin
3010 ShowMessage(logTekst);
3011 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3012 Application.Terminate;
3013 exit;
3014 end;
3015 end;
3016 end;
3017
3018
3019 // Tjekker UrlFindPakketype
3020 if CheckUrl(UrlFindPakketype) then
3021 begin
3022 logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;
3023 SkrivScanningLogFil(logTekst);
3024 end
3025 else
3026 begin
3027 inc(urlFejl); // Optæller antal fejl
3028 logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;
3029 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3030 if TjekUrls = '1' then
3031 begin
3032 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3033 end;
3034 SkrivScanningLogFil(logTekst);
3035 if TjekUrls = '1' then
3036 begin
3037 ShowMessage(logTekst);
3038 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3039 Application.Terminate;
3040 exit;
3041 end;
3042 end;
3043
3044 // Tjekker UrlSendPrograminfo
3045 if CheckUrl(UrlSendPrograminfo) then
3046 begin
3047 logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;
3048 SkrivScanningLogFil(logTekst);
3049 end
3050 else
3051 begin
3052 inc(urlFejl); // Optæller antal fejl
3053 logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;
3054 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3055 if TjekUrls = '1' then
3056 begin
3057 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3058 end;
3059 SkrivScanningLogFil(logTekst);
3060 if TjekUrls = '1' then
3061 begin
3062 ShowMessage(logTekst);
3063 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3064 Application.Terminate;
3065 exit;
3066 end;
3067 end;
3068
3069 if urlFejl > 0 then
3070 begin
3071 TjekUrls := '-'; // markerer at der var fejl
3072 end
3073 else
3074 begin
3075 logTekst := 'urls er ok';
3076 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3077 SkrivScanningLogFil(logTekst);
3078 end;
3079
3080 end;
3081
3082 function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;
3083 var
3084 LocalFileTime: TFileTime;
3085 SystemTime: TSystemTime;
3086 begin
3087 FileTimeToLocalFileTime(FileTime, LocalFileTime) ;
3088 FileTimeToSystemTime(LocalFileTime, SystemTime) ;
3089 Result := SystemTimeToDateTime(SystemTime) ;
3090 end;
3091
3092 procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
3093 var
3094 SR: TSearchRec;
3095 dt: TDateTime;
3096 CreationTime: TFileTime;
3097 dtCreation: TDateTime;
3098 BemTxt : String;
3099 begin
3100 logTekst := 'Logfiler tjekkes for sletning.';
3101 SkrivScanningLogFil(logTekst);
3102 FileList.Insert(0,logTekst);
3103 if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
3104 begin
3105 repeat
3106 if (SR.Attr <> faDirectory) then
3107 begin
3108 dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
3109 CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
3110 dtCreation := FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
3111 // Selvom creation date godt kan være forskellig fra modified date,
3112 // skal vi alligevel altid tjekke filens alder ud fra modified date
3113 // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
3114 BemTxt := '';
3115 if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
3116 begin
3117 BemTxt := ' (skal slettes)';
3118 end;
3119 logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
3120 if DaysBetween(dtCreation, dt) > 1 then
3121 begin
3122 logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
3123 end;
3124 FileList.Insert(0,logTekst);
3125 SkrivScanningLogFil(logTekst);
3126 if BemTxt = ' (skal slettes)' then
3127 begin
3128 if DeleteFile(Path + SR.Name) then
3129 begin
3130 logTekst := 'Logfil er slettet.';
3131 FileList.Insert(0,logTekst);
3132 SkrivScanningLogFil(logTekst);
3133 end
3134 else
3135 begin
3136 logTekst := 'Logfil kunne IKKE slettes.';
3137 FileList.Insert(0,logTekst);
3138 SkrivScanningLogFil(logTekst);
3139 end;
3140 end;
3141 end;
3142 until FindNext(SR) <> 0;
3143 FindClose(SR);
3144 end;
3145 end;
3146
3147 procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);
3148 begin
3149 PakkeshopStregkode := '';
3150 PakkeshopTjekkode := '';
3151 PakkeshopNulstil.Visible := false;
3152 PakkeshopText1.Caption := 'Stregkode';
3153 BoghandlerStregkode := '';
3154 BoghandlerTjekkode := '';
3155 Stregkode := '';
3156 // 20150312: start
3157 if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
3158 begin
3159 ShowMessage('Programmet afbrydes...');
3160 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3161 Application.Terminate;
3162 exit;
3163 end;
3164 // 20150312: slut
3165 InitScreen();
3166 // MainForm.Color := HexToTColor(Farve);
3167 if Farve <> '' then
3168 begin
3169 MainForm.Color := HexToTColor(Farve);
3170 // 20150312: start
3171 (*
3172 end
3173 else
3174 begin
3175 ShowMessage('Programmet afbrydes...');
3176 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3177 Application.Terminate;
3178 *)
3179 // 20150312: slut
3180 end;
3181 if (Budlevering1.Checked) then
3182 begin
3183 InitLillePakke();
3184 end;
3185 PrinterstatusStaticText1.Caption := '';
3186 PrinterstatusStaticText1.Color := MainForm.Color;
3187 end;
3188
3189
3190 procedure TMainForm.PanelValg1Click(Sender: TObject);
3191 begin
3192 Scanningtype := '1';
3193 InitNatxpresslevering();
3194 NulstilAutomatiskValg();
3195 end;
3196
3197 procedure TMainForm.PanelValg2Click(Sender: TObject);
3198 begin
3199 Scanningtype := '2';
3200 InitReturFraDao();
3201 NulstilAutomatiskValg();
3202 end;
3203
3204 procedure TMainForm.PanelValg3Click(Sender: TObject);
3205 begin
3206 Scanningtype := '3';
3207 InitReturFraKunde();
3208 NulstilAutomatiskValg();
3209 end;
3210
3211 procedure TMainForm.PanelValg4Click(Sender: TObject);
3212 begin
3213 Scanningtype := '4';
3214 InitDirektelevering();
3215 NulstilAutomatiskValg();
3216 end;
3217
3218 procedure TMainForm.PanelValg5Click(Sender: TObject);
3219 begin
3220 Scanningtype := '5';
3221 InitPakkeshoplevering();
3222 NulstilAutomatiskValg();
3223 end;
3224
3225 procedure TMainForm.PanelValg6Click(Sender: TObject);
3226 begin
3227 Scanningtype := '6';
3228 InitReturFraPakkeshop();
3229 NulstilAutomatiskValg();
3230 end;
3231
3232
3233 procedure TMainForm.PanelValg7Click(Sender: TObject);
3234 begin
3235 Scanningtype := '7';
3236 InitIndleveringskode();
3237 NulstilAutomatiskValg();
3238
3239 end;
3240
3241 procedure TMainForm.PanelValgAClick(Sender: TObject);
3242 begin
3243 // 20150311: start
3244 (*
3245 if PanelValgA.Color = clBtnFace then
3246 begin
3247 AutomatiskValg1.Checked := true;
3248 PanelValgA.Color := clGreen;
3249 PanelValgA.Font.Color := clWhite;
3250 end
3251 else
3252 begin
3253 AutomatiskValg1.Checked := false;
3254 PanelValgA.Color := clBtnFace;
3255 PanelValgA.Font.Color := clWindowText;
3256 end;
3257 *)
3258 // Skal ikke toggle men bare sætte funktionen on
3259 // Fravælges ved at vælge en scanningstype
3260 AutomatiskValg1.Checked := true;
3261 PanelValgA.Color := clGreen;
3262 PanelValgA.Font.Color := clWhite;
3263 // 20150311: slut
3264 end;
3265
3266 procedure TMainForm.Pakkernormal1Click(Sender: TObject);
3267 begin
3268 Scanningtype := '1';
3269 NulstilAutomatiskValg();
3270 InitNatxpresslevering();
3271 end;
3272
3273 procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
3274 var
3275 RuteNummer : String;
3276 Kommentar : String;
3277 BoghandlerNavn : String;
3278 Koreliste : String;
3279 Falsk : Boolean;
3280 Sand : Boolean;
3281 SmsKode : String;
3282 DBKbane : String;
3283 Leveringssted : String;
3284 orgTjekUrls : String;
3285 begin
3286 orgTjekUrls := TjekUrls;
3287 if (TjekUrls = '1') or (TjekUrls = '2') then
3288 begin
3289 TjekkerUrls();
3290 end;
3291 if TjekUrls = '-' then
3292 begin
3293 //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
3294 RuteNummer := '';
3295 Kommentar := 'Se log vinduet';
3296 BoghandlerNavn := 'Fejl i forbindelse til server';
3297 Koreliste := '';
3298 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3299 // Her kommer en alarm og rød skærm
3300 PlaySound(PWideChar(AlarmLyd));
3301 MainForm.Color := clRed;
3302 PakkeshopNulstil.Visible := true;
3303 end
3304 else
3305 begin
3306 Falsk := False;
3307 Sand := True;
3308 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
3309 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3310 SmsKode := '999999';
3311 DBKbane := '999';
3312 Leveringssted := 'XXX';
3313 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3314 FocusControl(StregkodeST);
3315 end;
3316 TjekUrls := orgTjekUrls;
3317
3318 end;
3319
3320 procedure TMainForm.Testprinter1Click(Sender: TObject);
3321 var
3322 RuteNummer : String;
3323 Kommentar : String;
3324 BoghandlerNavn : String;
3325 Koreliste : String;
3326 Falsk : Boolean;
3327 Sand : Boolean;
3328 SmsKode : String;
3329 DBKbane : String;
3330 Leveringssted : String;
3331 begin
3332 RuteNummer := 'Rutenr';
3333 Kommentar := '***** Kommentar *****';
3334 BoghandlerNavn := 'Modtagernavn';
3335 Falsk := False;
3336 Sand := True;
3337
3338 if (Printer.Printers.Count = 0) then
3339 begin
3340 ShowMessage('Der er ikke installeret en printer på denne PC.');
3341 end
3342 else if PrinterNavn = 'Ingen' then
3343 begin
3344 ShowMessage('Der er fravalgt printer i dette program.');
3345 end
3346 else
3347 begin
3348 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3349 SmsKode := '999999';
3350 DBKbane := '999';
3351 Leveringssted := 'XXX';
3352 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3353 CheckPrintQue('Test');
3354 end;
3355 FocusControl(StregkodeST);
3356 end;
3357
3358 procedure TMainForm.Timer1Timer(Sender: TObject);
3359 begin
3360 if (TjekPrinter = '1') then
3361 begin
3362 CheckPrintQue('Timer');
3363 end
3364 else
3365 begin
3366 PrinterstatusStaticText1.Caption := '';
3367 PrinterstatusStaticText1.Color := MainForm.Color;
3368 end;
3369 end;
3370
3371 {
3372 VERY fast split function
3373 this function returns part of a string based on
3374 constant defineable delimiters, such as ";". So
3375 SPLIT('this is a test ',' ',3) = 'is' or
3376 SPLIT('data;another;yet;again;more;',';',4) = 'yet'
3377
3378 Split function shifts index integer by two to
3379 be compatible with commonly used PD split function
3380 gpl 2004 / Juhani Suhonen
3381 }
3382 function TMainForm.split(input: string; schar: Char; s: Integer): string;
3383 var
3384 c: array of Integer;
3385 b, t: Integer;
3386 begin
3387 Dec(s, 2); // for compatibility with very old & slow split function
3388 t := 0; // variable T needs to be initialized...
3389 setlength(c, Length(input));
3390 for b := 0 to pred(High(c)) do
3391 begin
3392 c[b + 1] := posex(schar, input, succ(c[b]));
3393 // BREAK LOOP if posex looped (position before previous)
3394 // or wanted position reached..
3395 if (c[b + 1] < c[b]) or (s < t) then break
3396 else
3397 Inc(t);
3398 end;
3399 Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));
3400 end;
3401
3402 procedure TMainForm.Om1Click(Sender: TObject);
3403 const
3404 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3405 var
3406 tekst, filversion : String;
3407 begin
3408
3409 filversion := Sto_GetFmtFileVersion('','');
3410 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3411
3412 tekst := tekst+crlf+crlf;
3413 tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
3414 tekst := tekst+crlf;
3415
3416 if SpecialVersionSted = '' then
3417 begin
3418 tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
3419 end;
3420
3421 if SpecialVersionSted <> '' then
3422 begin
3423 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
3424 begin
3425 if Stednavn = '' then
3426 begin
3427 tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
3428 end
3429 else
3430 begin
3431 tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';
3432 end;
3433 end
3434 else
3435 begin
3436 tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';
3437 end;
3438 end;
3439
3440 if (Pos('omdeling.info',Url) = 0) then
3441 begin
3442 tekst := tekst+crlf+crlf;
3443 tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3444 tekst := tekst+crlf+crlf;
3445 tekst := tekst+crlf+crlf+'Url: '+url;
3446 end;
3447
3448 MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3449
3450 end;
3451
3452 procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3453 Rect: TRect; State: TOwnerDrawState);
3454 var
3455 ListBox1MaxLinLgd,i : Integer;
3456 myColor: TColor;
3457 myBrush: TBrush;
3458 begin
3459 ListBox1MaxLinLgd := 0;
3460 myBrush := TBrush.Create;
3461 with (Control as TListBox).Canvas do
3462 begin
3463 if not Odd(Index) then
3464 myColor := clWhite
3465 else
3466 myColor := clSilver;
3467
3468 if odSelected in State then
3469 begin
3470 myColor := MainForm.Color;
3471 font.Color := clBlack;
3472 end;
3473
3474 myBrush.Style := bsSolid;
3475 myBrush.Color := myColor;
3476 Windows.FillRect(handle, Rect, myBrush.Handle) ;
3477 Brush.Style := bsClear;
3478 TextOut(Rect.Left, Rect.Top,
3479 (Control as TListBox).Items[Index]) ;
3480 MyBrush.Free;
3481 end;
3482
3483 for i := 0 to (ListBox1.Items.Count - 1) do
3484 if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3485 ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3486 ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3487 end;
3488
3489 procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3490 begin
3491
3492 Application.Terminate;
3493
3494 end;
3495
3496 procedure TMainForm.Manual1Click(Sender: TObject);
3497 var
3498 fileName : string;
3499 begin
3500 fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3501
3502 if FileExists(fileName) then
3503 begin
3504 if AdobeReaderExists then
3505 begin
3506 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3507 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3508 end
3509 else
3510 begin
3511 ShowMessage('Acrobat Reader er ikke installeret!');
3512 end;
3513 end
3514 else
3515 begin
3516 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3517 end;
3518 end;
3519
3520 procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3521 var
3522 fileName : string;
3523 begin
3524 fileName := 'Docs\Manual_0.pdf';
3525
3526 if FileExists(fileName) then
3527 begin
3528 if AdobeReaderExists then
3529 begin
3530 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3531 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3532 end
3533 else
3534 begin
3535 ShowMessage('Acrobat Reader er ikke installeret!');
3536 end;
3537 end
3538 else
3539 begin
3540 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3541 end;
3542 end;
3543
3544 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3545 begin
3546
3547 if Sprgefterboghandlernummer1.Checked then
3548 begin
3549 chkSporgEfterKunde.Checked := true;
3550 end
3551 else
3552 begin
3553 chkSporgEfterKunde.Checked := false;
3554 end;
3555
3556
3557 end;
3558
3559 procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);
3560 begin
3561 Scanningtype := '2';
3562 NulstilAutomatiskValg();
3563 InitReturFraDao();
3564 end;
3565
3566 procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);
3567 begin
3568 Scanningtype := '6';
3569 InitReturFraPakkeshop();
3570 NulstilAutomatiskValg();
3571 end;
3572
3573 procedure TMainForm.InitNatxpresslevering();
3574 begin
3575 AutomatiskTjekkodeStyring1.Enabled := true;
3576 PakkeshopNulstil.Visible := false;
3577 Pakkernormal1.Checked := true;
3578 InitForm(FarveNormal,TitelNormal,UrlNormal);
3579 PanelValg1.Color := clGreen;
3580 PanelValg1.Font.Color := clWhite;
3581
3582 chkAltidPrintLabel.Enabled := true;
3583 Altidprintepakkelabel1.Enabled := true;
3584 Altidprintepakkelabel1.Checked := false;
3585 chkAltidPrintLabel.Checked := false;
3586 Sprgefterboghandlernummer1.Checked := false;
3587 chkSporgEfterKunde.Checked := false;
3588 Sprgefterboghandlernummer1.Enabled := true;
3589 Smpakker1.Enabled := false;
3590 Storepakker1.Enabled := false;
3591 radioStorPakke.Enabled := false;
3592 radioLillePakke.Enabled := false;
3593 ListBox1.Visible := true;
3594 OpdaterListenButton01.Enabled := true;
3595 EKLoverforsel.Enabled := true;
3596 InitLillePakke();
3597 ListBox1.Items.Clear;
3598 if BladhusSted = 0 then
3599 begin
3600 IndlesScanningLogFil();
3601 IndlesManglendeScanninger();
3602 end;
3603 end;
3604
3605 procedure TMainForm.InitReturFraDao();
3606 begin
3607 AutomatiskTjekkodeStyring1.Enabled := false;
3608 ReturpakkerfraDAO1.Checked := true;
3609 PakkeshopNulstil.Visible := false;
3610 InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3611 PanelValg2.Color := clGreen;
3612 PanelValg2.Font.Color := clWhite;
3613
3614 chkAltidPrintLabel.Enabled := false;
3615 Altidprintepakkelabel1.Enabled := false;
3616
3617 Altidprintepakkelabel1.Checked := false;
3618 Sprgefterboghandlernummer1.Checked := false;
3619 chkSporgEfterKunde.Checked := false;
3620 Sprgefterboghandlernummer1.Enabled := false;
3621 Smpakker1.Enabled := true;
3622 Storepakker1.Enabled := true;
3623 radioStorPakke.Enabled := true;
3624 radioLillePakke.Enabled := true;
3625 ListBox1.Visible := true;
3626 ListBox1.Items.Clear;
3627 ListBox2.Items.Clear;
3628 EKLoverforsel.Enabled := false;
3629 InitLillePakke();
3630 end;
3631
3632 procedure TMainForm.InitReturFraKunde();
3633 begin
3634 AutomatiskTjekkodeStyring1.Enabled := false;
3635 Returpakkerfraboghandler1.Checked := true;
3636 PakkeshopNulstil.Visible := false;
3637 InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3638 PanelValg3.Color := clGreen;
3639 PanelValg3.Font.Color := clWhite;
3640
3641 chkAltidPrintLabel.Enabled := false;
3642 Altidprintepakkelabel1.Enabled := false;
3643 Altidprintepakkelabel1.Checked := false;
3644 Sprgefterboghandlernummer1.Checked := false;
3645 chkSporgEfterKunde.Checked := false;
3646 Sprgefterboghandlernummer1.Enabled := false;
3647 Smpakker1.Enabled := true;
3648 Storepakker1.Enabled := true;
3649 radioStorPakke.Enabled := true;
3650 radioLillePakke.Enabled := true;
3651 ListBox1.Visible := true;
3652 ListBox1.Items.Clear;
3653 ListBox2.Items.Clear;
3654 EKLoverforsel.Enabled := false;
3655 InitLillePakke();
3656 end;
3657
3658 procedure TMainForm.InitDirektelevering();
3659 begin
3660 AutomatiskTjekkodeStyring1.Enabled := false;
3661 Budlevering1.Checked := true;
3662 PakkeshopNulstil.Visible := false;
3663 InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3664 PanelValg4.Color := clGreen;
3665 PanelValg4.Font.Color := clWhite;
3666
3667 chkAltidPrintLabel.Enabled := false;
3668 Altidprintepakkelabel1.Enabled := false;
3669
3670 Altidprintepakkelabel1.Checked := false;
3671 Sprgefterboghandlernummer1.Checked := false;
3672 chkSporgEfterKunde.Checked := false;
3673 Sprgefterboghandlernummer1.Enabled := false;
3674 Smpakker1.Enabled := true;
3675 Storepakker1.Enabled := true;
3676 radioStorPakke.Enabled := true;
3677 radioLillePakke.Enabled := true;
3678 ListBox1.Visible := true;
3679 ListBox1.Items.Clear;
3680 DownloadButton01.Enabled := false;
3681 OpdaterListenButton01.Enabled := true;
3682 DownloadButton03.Visible := false;
3683 EKLoverforsel.Enabled := false;
3684 IdFTP1.Passive := true;
3685 IdFTP1.PassiveUseControlHost := true;
3686 if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3687 begin
3688 IndlesScanningLogFil();
3689 IndlesManglendeScanninger();
3690 end;
3691
3692 end;
3693
3694 procedure TMainForm.InitPakkeshoplevering();
3695 begin
3696 AutomatiskTjekkodeStyring1.Enabled := true;
3697 Pakkeshoplevering1.Checked := true;
3698 PakkeshopNulstil.Visible := false;
3699 InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3700 PanelValg5.Color := clGreen;
3701 PanelValg5.Font.Color := clWhite;
3702
3703 chkAltidPrintLabel.Enabled := false;
3704 Altidprintepakkelabel1.Enabled := false;
3705
3706 Altidprintepakkelabel1.Checked := false;
3707 Sprgefterboghandlernummer1.Checked := false;
3708 chkSporgEfterKunde.Checked := false;
3709 Sprgefterboghandlernummer1.Enabled := false;
3710 Smpakker1.Enabled := false;
3711 Storepakker1.Enabled := false;
3712 radioStorPakke.Enabled := false;
3713 radioLillePakke.Enabled := false;
3714 ListBox1.Visible := true;
3715 ListBox1.Items.Clear;
3716 DownloadButton01.Enabled := false;
3717 OpdaterListenButton01.Enabled := true;
3718
3719 EKLoverforsel.Enabled := true;
3720
3721 InitLillePakke();
3722 IndlesScanningLogFil();
3723 if BladhusSted = 0 then
3724 begin
3725 IndlesManglendeScanninger();
3726 end;
3727 IdFTP1.Passive := true;
3728 IdFTP1.PassiveUseControlHost := true;
3729 end;
3730
3731 procedure TMainForm.InitReturFraPakkeshop();
3732 begin
3733 AutomatiskTjekkodeStyring1.Enabled := false;
3734 Returpakkerfrapakkeshop1.Checked := true;
3735 PakkeshopNulstil.Visible := false;
3736 InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3737 PanelValg6.Color := clGreen;
3738 PanelValg6.Font.Color := clWhite;
3739
3740 chkAltidPrintLabel.Enabled := false;
3741 Altidprintepakkelabel1.Enabled := false;
3742
3743 Altidprintepakkelabel1.Checked := false;
3744 Sprgefterboghandlernummer1.Checked := false;
3745 chkSporgEfterKunde.Checked := false;
3746 Sprgefterboghandlernummer1.Enabled := false;
3747 Smpakker1.Enabled := false;
3748 Storepakker1.Enabled := false;
3749 radioStorPakke.Enabled := false;
3750 radioLillePakke.Enabled := false;
3751 ListBox1.Visible := true;
3752 ListBox1.Items.Clear;
3753 DownloadButton01.Enabled := false;
3754 OpdaterListenButton01.Enabled := true;
3755 EKLoverforsel.Enabled := false;
3756 InitLillePakke();
3757 IndlesScanningLogFil();
3758 if BladhusSted = 0 then
3759 begin
3760 IndlesManglendeScanninger();
3761 end;
3762 IdFTP1.Passive := true;
3763 IdFTP1.PassiveUseControlHost := true;
3764 end;
3765
3766 procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
3767 begin
3768 Scanningtype := '3';
3769 NulstilAutomatiskValg();
3770 InitReturFraKunde();
3771 end;
3772
3773 procedure TMainForm.InitIndleveringskode();
3774 begin
3775 AutomatiskTjekkodeStyring1.Enabled := false;
3776 Returpakkerfrapakkeshop1.Checked := true;
3777 PakkeshopNulstil.Visible := false;
3778 InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3779 PanelValg7.Color := clGreen;
3780 PanelValg7.Font.Color := clWhite;
3781
3782 chkAltidPrintLabel.Enabled := false;
3783 Altidprintepakkelabel1.Enabled := false;
3784
3785 Altidprintepakkelabel1.Checked := false;
3786 Sprgefterboghandlernummer1.Checked := false;
3787 Sprgefterboghandlernummer1.Enabled := false;
3788 chkSporgEfterKunde.Checked := false;
3789
3790
3791
3792 Smpakker1.Enabled := false;
3793 Storepakker1.Enabled := false;
3794 radioStorPakke.Enabled := false;
3795 radioLillePakke.Enabled := false;
3796 ListBox1.Visible := true;
3797 ListBox1.Items.Clear();
3798
3799 DownloadButton01.Enabled := false;
3800 OpdaterListenButton01.Enabled := true;
3801 EKLoverforsel.Enabled := false;
3802 InitLillePakke();
3803 IndlesScanningLogFil();
3804 if BladhusSted = 0 then
3805 begin
3806 IndlesManglendeScanninger();
3807 end;
3808 IdFTP1.Passive := true;
3809 IdFTP1.PassiveUseControlHost := true;
3810 end;
3811
3812
3813 procedure TMainForm.Storepakker1Click(Sender: TObject);
3814 begin
3815 InitStorPakke();
3816 end;
3817
3818 procedure TMainForm.Smpakker1Click(Sender: TObject);
3819 begin
3820 InitLillePakke();
3821 end;
3822
3823 procedure TMainForm.InitLillePakke();
3824 begin
3825 radioLillePakke.Checked := true;
3826 Smpakker1.Checked := true;
3827 // Stregkode := '';
3828 end;
3829
3830 procedure TMainForm.InitStorPakke();
3831 begin
3832 radioStorPakke.Checked := true;
3833 Storepakker1.Checked := true;
3834 // 20150310: start
3835 // Stregkode := '';
3836 // 20150310: slut
3837 end;
3838
3839 /// <summary>
3840 /// This function reads the file resource of "FileName" and returns
3841 /// the version number as formatted text.</summary>
3842 /// <example>
3843 /// Sto_GetFmtFileVersion() = '4.13.128.0'
3844 /// Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'
3845 /// </example>
3846 /// <remarks>If "Fmt" is invalid, the function may raise an
3847 /// EConvertError exception.</remarks>
3848 /// <param name="FileName">Full path to exe or dll. If an empty
3849 /// string is passed, the function uses the filename of the
3850 /// running exe or dll.</param>
3851 /// <param name="Fmt">Format string, you can use at most four integer
3852 /// values.</param>
3853 /// <returns>Formatted version number of file, '' if no version
3854 /// resource found.</returns>
3855 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';
3856 const Fmt: String = '%d.%d.%d.%d'): String;
3857 var
3858 sFileName: String;
3859 iBufferSize: DWORD;
3860 iDummy: DWORD;
3861 pBuffer: Pointer;
3862 pFileInfo: Pointer;
3863 iVer: array[1..4] of Word;
3864 S : String;
3865 begin
3866 // set default value
3867 Result := '';
3868 // get filename of exe/dll if no filename is specified
3869 sFileName := Trim(FileName);
3870 if (sFileName = '') then
3871 sFileName := GetModuleName(HInstance);
3872 // get size of version info (0 if no version info exists)
3873 iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
3874 if (iBufferSize > 0) then
3875 begin
3876 GetMem(pBuffer, iBufferSize);
3877 try
3878 // get fixed file info (language independent)
3879 GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
3880 VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
3881 // read version blocks
3882 iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
3883 iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
3884 iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
3885 iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
3886 finally
3887 FreeMem(pBuffer);
3888 end;
3889 // format result string
3890 Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
3891
3892 // Hvorfor virker ovenstående ikke ???
3893 S := '';
3894 Str(iVer[1],Result);
3895 S := S+Result+'.';
3896 Str(iVer[2],Result);
3897 S := S+Result+'.';
3898 Str(iVer[3],Result);
3899 S := S+Result+'.';
3900 Str(iVer[4],Result);
3901 S := S+Result+'';
3902 Result := S;
3903 end;
3904 end;
3905
3906 procedure TMainForm.PlaySound(filename : PWideChar);
3907 begin
3908 if (filename <> '') then
3909 begin
3910 sndPlaySound(filename,
3911 SND_NODEFAULT Or SND_ASYNC);
3912 end;
3913 end;
3914
3915 procedure TMainForm.Testlyd1Click(Sender: TObject);
3916 begin
3917 if AlarmLyd <> '' then
3918 begin
3919 PlaySound(PWideChar(AlarmLyd));
3920 end
3921 else
3922 begin
3923 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3924 end;
3925 end;
3926
3927 procedure TMainForm.Testlyd2Click(Sender: TObject);
3928 begin
3929 if (PakkeshopText1.Caption = 'Tjekkode') then
3930 begin
3931 if ScannetOkTilTjekkodeLyd <> '' then
3932 begin
3933 PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
3934 end
3935 else
3936 begin
3937 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3938 end;
3939 exit;
3940 end;
3941
3942 if Smpakker1.Checked then
3943 if ScannetOkLyd <> '' then
3944 begin
3945 PlaySound(PWideChar(ScannetOkLyd));
3946 end
3947 else
3948 begin
3949 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3950 end;
3951 if Storepakker1.Checked then
3952 if ScannetOkStorLyd <> '' then
3953 begin
3954 PlaySound(PWideChar(ScannetOkStorLyd));
3955 end
3956 else
3957 begin
3958 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3959 end;
3960 end;
3961
3962
3963 procedure TMainForm.Budlevering1Click(Sender: TObject);
3964 begin
3965 Scanningtype := '4';
3966 NulstilAutomatiskValg();
3967 InitDirektelevering();
3968 end;
3969
3970 procedure TMainForm.Button1Click(Sender: TObject);
3971 begin;
3972 CheckCode();
3973 end;
3974
3975 procedure TMainForm.EKLoverforselClick(Sender: TObject);
3976 var
3977 WebSvar : String;
3978 URLStr : String;
3979 StedKode : String;
3980 Node: IXMLNode;
3981 I: Integer;
3982 status, kommentar : String;
3983
3984 begin
3985 EKLoverforsel.Enabled := false;
3986
3987 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3988 logTekst := 'Overfører de scannede pakker til EKL';
3989 SkrivScanningLogFil(logTekst);
3990 StedKode := Sted;
3991 URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3992 // 20150330: start
3993 if PanelValg5.Color = clGreen then
3994 begin
3995 URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3996 end;
3997 // 20150330: slut
3998
3999 try
4000 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4001 WebSvar := IdHTTP1.Get(URLStr);
4002 except
4003 on e:EIdConnClosedGracefully do
4004 begin
4005 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4006 WebSvar := IdHTTP1.Get(URLStr);
4007 end;
4008 on e:exception do
4009 begin
4010 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4011 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4012 SkrivScanningLogFil(logTekst);
4013 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4014 end;
4015 end;
4016 try
4017 XMLDocument1.LoadFromXML(WebSvar);
4018 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4019 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4020 if Node.NodeType = ntElement then begin
4021 if Node.NodeName = 'Status' then begin
4022 if not VarIsNull(Node.NodeValue) then
4023 status := Node.NodeValue;
4024 end;
4025 if Node.NodeName = 'Kommentar' then begin
4026 if not VarIsNull(Node.NodeValue) then
4027 kommentar := Node.NodeValue;
4028 end;
4029 end;
4030 end;
4031
4032 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
4033 logTekst := 'Overførsel til EKL: ' + status;
4034 SkrivScanningLogFil(logTekst);
4035
4036 except on e:exception do
4037 begin
4038 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
4039 logTekst := 'Overførsel til EKL: ' + status;
4040 SkrivScanningLogFil(logTekst);
4041 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4042 logTekst := 'Fejl i XML-format: '+e.Message;
4043 SkrivScanningLogFil(logTekst);
4044 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4045 end;
4046 end;
4047
4048 EKLoverforsel.Enabled := true;
4049
4050 ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4051
4052 // Hvis der var fejl i overførslen skal dette fejlmeldes her
4053 if status = 'Fejl' then
4054 begin // Her skal komme en alarm og rød skærm
4055 PlaySound(PWideChar(AlarmLyd));
4056 MainForm.Color := clRed;
4057 RutenummerST.Caption := 'EKL overførsel';
4058 BoghandlerNavnST.Caption := 'Fejl:';
4059 if (pos('Deadlock', Kommentar) > 0) then
4060 begin
4061 RutenummerST.Caption := 'EKL overførsel fejlet';
4062 BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
4063 end;
4064 KommentarST.Caption := Kommentar;
4065 PakkeshopNulstil.Visible := true;
4066 end;
4067
4068 end;
4069
4070 procedure TMainForm.CheckCode();
4071 var
4072 Barcode, Svar : String;
4073 ClickedOK : Boolean;
4074 begin
4075 ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
4076 if ClickedOk then
4077 begin
4078 { if (BarCodeValid(Barcode)) then
4079 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4080 else
4081 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4082 }
4083 // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
4084 { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
4085 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4086 else
4087 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4088 }
4089 Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4090
4091 MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4092 CheckCode();
4093 end;
4094
4095 end;
4096
4097 function TMainForm.BarCodeValid (ACode: string): boolean;
4098 var
4099 I: integer;
4100 SumOdd, SumEven: integer;
4101 ADigit, AChecksumDigit: integer;
4102 begin
4103 SumOdd := 0;
4104 SumEven := 0;
4105 for I := 1 to (Length (ACode) - 1) do begin
4106 ADigit := StrToIntDef (ACode [I], 0);
4107 if (I MOD 2 = 0) then begin
4108 SumEven := SumEven + ADigit;
4109 end else begin
4110 SumOdd := SumOdd + ADigit;
4111 end; {if}
4112 end; {for}
4113 AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);
4114 Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);
4115 end; {--BarCodeValid--}
4116
4117 { used for EAN 8/13 }
4118 function TMainForm.CheckSumModulo10(const data:string):string;
4119 var i,fak,sum : Integer;
4120 begin
4121 sum := 0;
4122 fak := Length(data);
4123 for i:=1 to Length(data) do
4124 begin
4125 if (fak mod 2) = 0 then
4126 sum := sum + (StrToInt(data[i])*1)
4127 else
4128 sum := sum + (StrToInt(data[i])*3);
4129 dec(fak);
4130 end;
4131 if (sum mod 10) = 0 then
4132 result := data+'0'
4133 else
4134 result := data+IntToStr(10-(sum mod 10));
4135 end;
4136
4137 //
4138 // Bladhus ***
4139 //
4140 procedure TMainForm.DownloadBladhusRuteskiftfil();
4141 const
4142 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4143
4144 var
4145 filnavn_input : string;
4146 filnavn_output : string;
4147 buttonSelected : Integer;
4148
4149 begin
4150 filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
4151 filnavn_output := BladhusRuteskiftfil_lokal;
4152
4153 case BladhusSted of
4154 00 : begin;
4155 end;
4156 01 : begin;
4157 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4158 if buttonSelected = mrOK then
4159 begin
4160 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4161 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4162 SkrivScanningLogFil(logTekst);
4163 try
4164 try
4165
4166 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4167 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4168 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4169 IdFTP1.Connect;
4170
4171 //IdFTP1.TransferType := ftASCII;
4172 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4173 try
4174 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4175 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4176 except on e:EIdConnClosedGracefully do
4177 begin
4178 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4179 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4180 end;
4181 end;
4182 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4183
4184 ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4185 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4186 SkrivScanningLogFil(logTekst);
4187
4188 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4189 logTekst := 'Ruteskift fil tjekkes.';
4190 SkrivScanningLogFil(logTekst);
4191
4192 finally
4193 IdFTP1.Disconnect;
4194 end;
4195
4196 except on e:exception do
4197 begin
4198 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4199 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4200 SkrivScanningLogFil(logTekst);
4201 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4202 [e.Message
4203 + CrLf + 'Host: '+IdFTP1.host
4204 + CrLf + 'Username: '+IdFTP1.Username
4205 ]
4206 );
4207 end;
4208 end;
4209 end
4210 else
4211 begin
4212 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4213 logTekst := 'Download af ruteskiftfil annulleret';
4214 SkrivScanningLogFil(logTekst);
4215 end;
4216 IndlesRuteskiftFil(filnavn_output);
4217 end;
4218 02 : begin;
4219 end;
4220 03 : begin;
4221 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4222 if buttonSelected = mrOK then
4223 begin
4224 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4225 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4226 SkrivScanningLogFil(logTekst);
4227 try
4228 try
4229
4230 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4231 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4232 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4233 IdFTP1.Connect;
4234
4235 //IdFTP1.TransferType := ftASCII;
4236 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4237 try
4238 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4239 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4240 except on e:EIdConnClosedGracefully do
4241 begin
4242 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4243 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4244 end;
4245 end;
4246 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4247
4248 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4249 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4250 SkrivScanningLogFil(logTekst);
4251
4252 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4253 logTekst := 'Ruteskift fil tjekkes.';
4254 SkrivScanningLogFil(logTekst);
4255
4256 finally
4257 IdFTP1.Disconnect;
4258 end;
4259
4260 except on e:exception do
4261 begin
4262 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4263 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4264 SkrivScanningLogFil(logTekst);
4265 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4266 [e.Message
4267 + CrLf + 'Host: '+IdFTP1.host
4268 + CrLf + 'Username: '+IdFTP1.Username
4269 ]
4270 );
4271 end;
4272 end;
4273 end
4274 else
4275 begin
4276 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4277 logTekst := 'Download af ruteskiftfil annulleret';
4278 SkrivScanningLogFil(logTekst);
4279 end;
4280 IndlesRuteskiftFil(filnavn_output);
4281 end;
4282 04 : begin;
4283 end;
4284 else
4285 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
4286 end;
4287
4288 end;
4289
4290 procedure TMainForm.DownloadBladhusKontrolfil();
4291 const
4292 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4293
4294 var
4295 filnavn_input : string;
4296 filnavn_output : string;
4297 buttonSelected : Integer;
4298
4299 begin
4300 filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
4301 filnavn_output := BladhusKontrolfil_lokal;
4302
4303 case BladhusSted of
4304 01 :
4305 begin;
4306 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4307 if buttonSelected = mrOK then
4308 begin
4309 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4310 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4311 SkrivScanningLogFil(logTekst);
4312 try
4313 try
4314
4315 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4316 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4317 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4318 IdFTP1.Connect;
4319
4320 //IdFTP1.TransferType := ftASCII;
4321 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4322 try
4323 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4324 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4325 except on e:EIdConnClosedGracefully do
4326 begin
4327 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4328 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4329 end;
4330 end;
4331 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4332
4333 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4334 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4335 SkrivScanningLogFil(logTekst);
4336
4337 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4338 logTekst := 'Rute kontrol fil tjekkes.';
4339 SkrivScanningLogFil(logTekst);
4340
4341 finally
4342 IdFTP1.Disconnect;
4343 end;
4344
4345 except on e:exception do
4346 begin
4347 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4348 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4349 SkrivScanningLogFil(logTekst);
4350 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4351 [e.Message
4352 + CrLf + 'Host: '+IdFTP1.host
4353 + CrLf + 'Username: '+IdFTP1.Username
4354 ]
4355 );
4356 end;
4357 end;
4358 end
4359 else
4360 begin
4361 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4362 logTekst := 'Download af kontrolfil annulleret';
4363 SkrivScanningLogFil(logTekst);
4364 end;
4365 IndlesKontrolFil(filnavn_output);
4366 end;
4367 02 : begin;
4368 end;
4369 03 : begin;
4370 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4371 if buttonSelected = mrOK then
4372 begin
4373 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4374 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4375 SkrivScanningLogFil(logTekst);
4376 try
4377 try
4378
4379 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4380 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4381 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4382 IdFTP1.Connect;
4383
4384 //IdFTP1.TransferType := ftASCII;
4385 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4386 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4387
4388 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4389 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4390 SkrivScanningLogFil(logTekst);
4391
4392 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4393 logTekst := 'Rute kontrol fil tjekkes.';
4394 SkrivScanningLogFil(logTekst);
4395
4396 finally
4397 IdFTP1.Disconnect;
4398 end;
4399
4400 except on e:exception do
4401 begin
4402 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4403 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4404 SkrivScanningLogFil(logTekst);
4405 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4406 [e.Message
4407 + CrLf + 'Host: '+IdFTP1.host
4408 + CrLf + 'Username: '+IdFTP1.Username
4409 ]
4410 );
4411 end;
4412 end;
4413 end
4414 else
4415 begin
4416 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4417 logTekst := 'Download af kontrolfil annulleret';
4418 SkrivScanningLogFil(logTekst);
4419 end;
4420 IndlesKontrolFil(filnavn_output);
4421 end;
4422 04 : begin;
4423 end;
4424 else
4425 ShowMessage('Ukendt Bladhus sted ???') ;
4426 end;
4427
4428 end;
4429
4430 procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
4431 const
4432 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4433
4434 var
4435 testsystem : String;
4436
4437 begin
4438 testsystem := '';
4439 if (Pos('omdeling.info',Url) = 0) then
4440 begin
4441 testsystem := 'TEST_';
4442 end;
4443 filnavn_output := testsystem + filnavn_output;
4444
4445 ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4446 logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4447 SkrivScanningLogFil(logTekst);
4448 try
4449 try
4450
4451 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4452 IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4453 IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4454 IdFTP1.Connect;
4455
4456 //IdFTP1.TransferType := ftASCII;
4457 try
4458 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4459 IdFTP1.ChangeDir('fraScannerprogram');
4460 IdFTP1.Put(filnavn_input, filnavn_output, True);
4461 except on e:EIdConnClosedGracefully do
4462 begin
4463 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4464 IdFTP1.Put(filnavn_input, filnavn_output, True);
4465 end;
4466 end;
4467 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4468
4469 logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4470 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4471 SkrivScanningLogFil(logTekst);
4472
4473 finally
4474 IdFTP1.Disconnect;
4475 end;
4476
4477 except on e:exception do
4478 begin
4479 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4480 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4481 SkrivScanningLogFil(logTekst);
4482 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4483 [e.Message
4484 + CrLf + 'Host: '+IdFTP1.host
4485 + CrLf + 'Username: '+IdFTP1.Username
4486 ]
4487 );
4488 end;
4489 end;
4490 end;
4491
4492 procedure TMainForm.UploadLogfilTilDAO();
4493 const
4494 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4495
4496 var
4497 idag, imorgen : TDateTime;
4498 imorgenYmd : string;
4499 logFilnavn : string;
4500 filnavn_input : string;
4501 filnavn_output : string;
4502 buttonSelected : Integer;
4503 openDialog : TOpenDialog;
4504
4505 begin
4506 idag := Now;
4507 imorgen := IncDay(idag, 1); //adds 1 day(s)
4508 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4509 if (FormatDateTime('hh:nn',idag) < '12:00') then
4510 begin
4511 imorgen := idag;
4512 end;
4513 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4514 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4515 filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4516 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4517
4518 buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4519 if buttonSelected = mrOK then
4520 begin
4521 SendFilTilDao('Log', filnavn_input, filnavn_output);
4522 end
4523 else
4524 begin
4525 buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4526 if buttonSelected = mrOK then
4527 begin
4528 // Create the open dialog object - assign to our open dialog variable
4529 openDialog := TOpenDialog.Create(self);
4530
4531 // Set up the starting directory to be the current one
4532 openDialog.InitialDir := GetCurrentDir + '\Logs';
4533
4534 // Only allow existing files to be selected
4535 openDialog.Options := [ofFileMustExist];
4536
4537 // Allow only .log files to be selected
4538 openDialog.Filter := 'Log filer|*.log';
4539
4540 // Display the open file dialog
4541 if openDialog.Execute then
4542 begin
4543 filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4544 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4545 SendFilTilDao('Log', filnavn_input, filnavn_output);
4546 end
4547 else
4548 begin
4549 logTekst := 'Upload af log fil annulleret';
4550 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4551 SkrivScanningLogFil(logTekst);
4552 end;
4553
4554 // Free up the dialog
4555 openDialog.Free;
4556 end
4557 else
4558 begin
4559 logTekst := 'Upload af log fil annulleret';
4560 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4561 SkrivScanningLogFil(logTekst);
4562 end;
4563 end;
4564
4565 end;
4566
4567 procedure TMainForm.UploadInifilTilDAO();
4568 const
4569 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4570
4571 var
4572 idag, imorgen : TDateTime;
4573 imorgenYmd : string;
4574 iniFilnavn : string;
4575 filnavn_input : string;
4576 filnavn_output : string;
4577 buttonSelected : Integer;
4578
4579 begin
4580 idag := Now;
4581 imorgen := IncDay(idag, 1); //adds 1 day(s)
4582 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4583 if (FormatDateTime('hh:nn',idag) < '12:00') then
4584 begin
4585 imorgen := idag;
4586 end;
4587 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4588 iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4589 filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4590 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4591
4592 buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4593 if buttonSelected = mrOK then
4594 begin
4595 SendFilTilDao('Ini', filnavn_input, filnavn_output);
4596 end
4597 else
4598 begin
4599 logTekst := 'Upload af ini fil annulleret';
4600 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4601 SkrivScanningLogFil(logTekst);
4602 end;
4603
4604 end;
4605
4606 procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4607 begin
4608 UploadLogfilTilDAO();
4609 UploadInifilTilDAO();
4610 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4611 end;
4612
4613 procedure TMainForm.DownloadButton01Click(Sender: TObject);
4614 begin
4615 DownloadBladhusKontrolfil();
4616 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4617 end;
4618
4619 procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);
4620 const
4621 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4622
4623 begin
4624 IndlesManglendeScanninger();
4625 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4626 end;
4627
4628 procedure TMainForm.DownloadButton03Click(Sender: TObject);
4629 begin
4630 if (getProddag() = 'lørdag') then
4631 begin
4632 DownloadBladhusRuteskiftfil();
4633 end;
4634 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4635 end;
4636
4637 function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;
4638 var
4639 S2: string;
4640 begin
4641 Result := 0;
4642 S2 := S + Border;
4643 repeat
4644 SetLength(A, Length(A) + 1);
4645 a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
4646 Delete(S2, 1,Length(a[Result] + Border));
4647 Inc(Result);
4648 until S2 = '';
4649 end;
4650
4651 procedure TMainForm.IndlesManglendeScanninger();
4652 var
4653 WebSvar : String;
4654 URLStr : String;
4655 StedKode : String;
4656 Node: IXMLNode;
4657 I: Integer;
4658 stregkode, modtagernavn, modtageradresse, kommentar : string;
4659 pakketype, tjekkodestatus : String;
4660 pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4661 pakketyper : TStrings;
4662 antlin : Integer;
4663
4664 antlinIdag, antlinSenere : Integer;
4665
4666 XmlFelter : TStrings;
4667
4668 begin
4669 XmlFelter := TStringList.Create;
4670 pakketyper := TStringList.Create;
4671 linienr := 0;
4672 ListBox2.Clear;
4673 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4674 logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4675 SkrivScanningLogFil(logTekst);
4676 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4677 begin
4678 StedKode := BladhusStedKode[BladhusSted];
4679 end
4680 else
4681 begin
4682 StedKode := Sted;
4683 end;
4684
4685
4686 if (Scanningtype = '6') then
4687 begin
4688 URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4689 end
4690 else if (Scanningtype = '5') then
4691 begin
4692 URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4693 end
4694 else if (Scanningtype = '1') then
4695 begin
4696 URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4697 end
4698 else if (Scanningtype = '4') then
4699 begin
4700 URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4701 end
4702 else
4703 begin
4704 exit;
4705 end;
4706 // 20150310: slut
4707
4708 try
4709 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4710 // URLStr := string(Utf8Encode(URLStr));
4711 WebSvar := IdHTTP1.Get(URLStr);
4712 except
4713 on e:EIdConnClosedGracefully do
4714 begin
4715 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4716 WebSvar := IdHTTP1.Get(URLStr);
4717 end;
4718 on e:exception do
4719 begin
4720 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4721 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4722 SkrivScanningLogFil(logTekst);
4723 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4724 end;
4725 end;
4726 try
4727 XMLDocument1.LoadFromXML(WebSvar);
4728
4729
4730 antlin := 0;
4731 antlinIdag := 0;
4732 antlinSenere := 0;
4733
4734 antalFelterFundet := 0;
4735 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4736 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4737 if Node.NodeType = ntElement then begin
4738 if Node.NodeName = 'Stregkode' then
4739 begin
4740 antlin := antlin + 1;
4741 // 20150306: start
4742 if not VarIsNull(Node.NodeValue) then
4743 begin
4744 if (pos('(', Node.NodeValue) = 0) then
4745 begin
4746 antlinIdag := antlinIdag + 1;
4747 end
4748 else
4749 begin
4750 antlinSenere := antlinSenere + 1;
4751 end;
4752 end;
4753 // 20150306: slut
4754 end;
4755 end;
4756 if (XmlFelter.values[Node.NodeName] <> '') then
4757 XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
4758 else
4759 XmlFelter.values[Node.NodeName] := '1';
4760
4761 end;
4762 antalLiniefelter := XmlFelter.Count;
4763 antalFelterFundet := 0;
4764 SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4765 SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4766
4767 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4768 if (antlinSenere > 0) then
4769 begin
4770 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4771 end;
4772 logTekst := logTekst + '.';
4773
4774 SkrivScanningLogFil(logTekst);
4775 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4776 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4777 if Node.NodeType = ntElement then begin
4778 if Node.NodeName = 'Stregkode' then begin
4779 if not VarIsNull(Node.NodeValue) then
4780 stregkode := Node.NodeValue;
4781 antalFelterFundet := antalFelterFundet + 1;
4782 end;
4783 if Node.NodeName = 'ModtagerNavn' then begin
4784 if not VarIsNull(Node.NodeValue) then
4785 modtagernavn := Node.NodeValue;
4786 antalFelterFundet := antalFelterFundet + 1;
4787 end;
4788 if Node.NodeName = 'ModtagerAdresse' then begin
4789 if not VarIsNull(Node.NodeValue) then
4790 modtageradresse := Node.NodeValue;
4791 antalFelterFundet := antalFelterFundet + 1;
4792 end;
4793 if Node.NodeName = 'Kommentar' then begin
4794 if not VarIsNull(Node.NodeValue) then
4795 kommentar := Node.NodeValue;
4796 antalFelterFundet := antalFelterFundet + 1;
4797 end;
4798 if Node.NodeName = 'PakkeType' then begin
4799 if not VarIsNull(Node.NodeValue) then
4800 pakketype := Node.NodeValue;
4801 antalFelterFundet := antalFelterFundet + 1;
4802 if (pakketyper.values[pakketype] <> '') then
4803 pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
4804 else
4805 pakketyper.values[pakketype] := '1';
4806 end;
4807 if Node.NodeName = 'TjekkodeStatus' then begin
4808 if not VarIsNull(Node.NodeValue) then
4809 tjekkodestatus := Node.NodeValue;
4810 antalFelterFundet := antalFelterFundet + 1;
4811 if (tjekkodestatus = '-1') then
4812 begin
4813 // 20150306: start
4814 // stregkoderMedTjekkodeArray[linienr] := stregkode;
4815 if (pos(' ', stregkode) > 0) then
4816 begin
4817 stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4818 end
4819 else
4820 begin
4821 stregkoderMedTjekkodeArray[linienr] := stregkode;
4822 end;
4823 linienr := linienr + 1;
4824 end;
4825 end;
4826 if antalFelterFundet = antalLiniefelter then
4827 begin
4828 if (ScanningType = '1') then
4829 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4830 else if (ScanningType = '4') then
4831 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4832 else if (ScanningType = '5') then
4833 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4834 else
4835 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4836 antalFelterFundet := 0;
4837 tjekkodestatus := '';
4838 end;
4839 end;
4840 end;
4841 for pakketypeix := 0 to pakketyper.Count-1 do
4842 begin
4843 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
4844 end;
4845
4846 // Free up the list object
4847 pakketyper.Free;
4848 // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4849 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4850 if (antlinSenere > 0) then
4851 begin
4852 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4853 end;
4854 logTekst := logTekst + '.';
4855 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4856 if (antlinSenere > 0) then
4857 begin
4858 StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4859 end
4860 else
4861 begin
4862 StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4863 end;
4864
4865 if (Scanningtype = '1') then
4866 begin
4867 //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4868 PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4869 if (antlinIdag + antlinSenere > 0) then
4870 begin
4871 PanelManglendePakker1.Visible := true;
4872 end
4873 else
4874 begin
4875 PanelManglendePakker1.Visible := false;
4876 end;
4877 end;
4878
4879 if (Scanningtype = '2') then
4880 begin
4881 PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4882 if (antlinIdag + antlinSenere > 0) then
4883 begin
4884 PanelManglendePakker2.Visible := true;
4885 end
4886 else
4887 begin
4888 PanelManglendePakker2.Visible := false;
4889 end;
4890 end;
4891
4892 if (Scanningtype = '3') then
4893 begin
4894 PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4895 if (antlinIdag + antlinSenere > 0) then
4896 begin
4897 PanelManglendePakker3.Visible := true;
4898 end
4899 else
4900 begin
4901 PanelManglendePakker3.Visible := false;
4902 end;
4903 end;
4904
4905 if (Scanningtype = '4') then
4906 begin
4907 PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4908 if (antlinIdag + antlinSenere > 0) then
4909 begin
4910 PanelManglendePakker4.Visible := true;
4911 end
4912 else
4913 begin
4914 PanelManglendePakker4.Visible := false;
4915 end;
4916 end;
4917
4918 if (Scanningtype = '5') then
4919 begin
4920 PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4921 if (antlinIdag + antlinSenere > 0) then
4922 begin
4923 PanelManglendePakker5.Visible := true;
4924 end
4925 else
4926 begin
4927 PanelManglendePakker5.Visible := false;
4928 end;
4929 end;
4930
4931 if (Scanningtype = '6') then
4932 begin
4933 PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4934 if (antlinIdag + antlinSenere > 0) then
4935 begin
4936 PanelManglendePakker6.Visible := true;
4937 end
4938 else
4939 begin
4940 PanelManglendePakker6.Visible := false;
4941 end;
4942 end;
4943
4944 except on e:exception do
4945 begin
4946 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4947 logTekst := 'Fejl i XML-format: '+e.Message;
4948 SkrivScanningLogFil(logTekst);
4949 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4950 end;
4951 end;
4952
4953 end;
4954
4955 procedure TMainForm.IndlesScanningLogFil();
4956 var
4957 SomeTxtFile : TextFile;
4958 buffer : string;
4959 S: string;
4960 idag, imorgen : TDateTime;
4961 imorgenYmd : string;
4962 logFilnavn : string;
4963
4964 begin
4965 idag := Now;
4966 imorgen := IncDay(idag, 1); //adds 1 day(s)
4967 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4968 if (FormatDateTime('hh:nn',idag) < '12:00') then
4969 begin
4970 imorgen := idag;
4971 end;
4972 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4973 logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4974 if FileExists(logFilnavn) then
4975 begin
4976 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4977 logTekst := logFilnavn+' indlæses.';
4978 SkrivScanningLogFil(logTekst);
4979 AssignFile(SomeTxtFile, logFilnavn);
4980 try
4981 Reset(SomeTxtFile);
4982 while not EOF(SomeTxtFile) do
4983 begin
4984 ReadLn(SomeTxtFile, buffer) ;
4985 S := buffer;
4986 ListBox1.Items.Insert(0, S);
4987 end;
4988 finally
4989 CloseFile(SomeTxtFile);
4990 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4991 ListBox1.Items.Insert(0,'');
4992 ListBox1.Items.Insert(0,'');
4993 ListBox1.Items.Insert(0,'');
4994 ListBox1.Items.Insert(0,'');
4995 ListBox1.Items.Insert(0,'');
4996 ListBox1.Items.Insert(0,'');
4997 end;
4998 end;
4999 end;
5000
5001 procedure TMainForm.SkrivScanningLogFil(var tekst : string);
5002 var
5003 SomeTxtFile : TextFile;
5004 buffer : string;
5005 S: string;
5006 idag, imorgen : TDateTime;
5007 imorgenYmd : string;
5008 logFilnavn : string;
5009 error : Integer;
5010
5011 begin
5012 if (SkrivLog = '1') then
5013 begin
5014 idag := Now;
5015 imorgen := IncDay(idag, 1); //adds 1 day(s)
5016 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5017 if (FormatDateTime('hh:nn',idag) < '12:00') then
5018 begin
5019 imorgen := idag;
5020 end;
5021 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5022 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
5023 // Get the current directory
5024 // dir := GetCurrentDir;
5025 // ShowMessage('Current directory = '+dir);
5026 // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
5027 // ShowMessage('logFilnavn = '+logFilnavn);
5028
5029 if not DirectoryExists('Logs') then
5030 begin
5031 CreateDir('Logs');
5032 end;
5033
5034 AssignFile(SomeTxtFile, logFilnavn);
5035 if FileExists(logFilnavn) then
5036 begin
5037 try
5038 try
5039 Append(SomeTxtFile);
5040 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5041 except on e:exception do
5042 //ShowMessageFmt('File create failed with error %d',[error]);
5043 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
5044 end;
5045 finally
5046 CloseFile(SomeTxtFile);
5047 end;
5048 end
5049 else
5050 begin
5051 try
5052 try
5053 ReWrite(SomeTxtFile);
5054 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5055 except on e:exception do
5056 // ShowMessageFmt('File create failed with error %d',[error]);
5057 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
5058 end;
5059 finally
5060 CloseFile(SomeTxtFile);
5061 end;
5062 end;
5063 end;
5064 end;
5065
5066 procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
5067 var
5068 SomeTxtFile : TextFile;
5069 buffer : string;
5070 linnr : integer;
5071 S: string;
5072 A: TStrArray;
5073 idag, imorgen : TDateTime;
5074 imorgenYmd : string;
5075
5076 begin
5077 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5078 logTekst := filnavn+' indlæses.';
5079 SkrivScanningLogFil(logTekst);
5080 SetLength(ruteHverdagArray, 1);
5081 SetLength(ruteLordagArray, 1);
5082 idag := Now;
5083 imorgen := IncDay(idag, 1); //adds 1 day(s)
5084 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5085 if (FormatDateTime('hh:nn',idag) < '12:00') then
5086 begin
5087 imorgen := idag;
5088 end;
5089 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5090 if FileExists(filnavn) then
5091 begin
5092 AssignFile(SomeTxtFile, filnavn);
5093 linnr := 0;
5094 try
5095 Reset(SomeTxtFile);
5096 while not EOF(SomeTxtFile) do
5097 begin
5098 ReadLn(SomeTxtFile, buffer) ;
5099 S := buffer;
5100 SetLength(A,0);
5101 Explode(A, ';', S);
5102 if (length(A) < 2) then
5103 begin
5104 Explode(A, ',', S);
5105 end;
5106 if (length(A) > 1) then
5107 begin
5108 SetLength(ruteHverdagArray, linnr+1);
5109 SetLength(ruteLordagArray, linnr+1);
5110 ruteHverdagArray[linnr] := A[0];
5111 ruteLordagArray[linnr] := A[1];
5112 linnr := linnr+1;
5113 end;
5114 end;
5115 finally
5116 //ShowMessage(IntToStr(length(A)));
5117 CloseFile(SomeTxtFile);
5118 //ShowMessage(IntToStr(length(ruteHverdagArray)));
5119 if (linnr > 0) then
5120 begin
5121 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5122 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5123 SkrivScanningLogFil(logTekst);
5124 end
5125 else
5126 begin
5127 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5128 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5129 SkrivScanningLogFil(logTekst);
5130 PlaySound(PWideChar(AlarmLyd));
5131 end;
5132 end;
5133 end
5134 else
5135 begin
5136 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
5137 logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
5138 SkrivScanningLogFil(logTekst);
5139 PlaySound(PWideChar(AlarmLyd));
5140 end;
5141 end;
5142
5143 procedure TMainForm.IndlesKontrolFil(var filnavn : string);
5144 var
5145 SomeTxtFile : TextFile;
5146 buffer : string;
5147 linnr : integer;
5148 S: string;
5149 A: TStrArray;
5150 idag, imorgen : TDateTime;
5151 imorgenYmd : string;
5152
5153 begin
5154 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5155 logTekst := filnavn+' indlæses.';
5156 SkrivScanningLogFil(logTekst);
5157 SetLength(ruteArray, 1);
5158 SetLength(korelisteArray, 1);
5159 idag := Now;
5160 imorgen := IncDay(idag, 1); //adds 1 day(s)
5161 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5162 if (FormatDateTime('hh:nn',idag) < '12:00') then
5163 begin
5164 imorgen := idag;
5165 end;
5166 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5167 if FileExists(filnavn) then
5168 begin
5169 AssignFile(SomeTxtFile, filnavn);
5170 linnr := 0;
5171 try
5172 Reset(SomeTxtFile);
5173 while not EOF(SomeTxtFile) do
5174 begin
5175 ReadLn(SomeTxtFile, buffer) ;
5176 S := buffer;
5177 SetLength(A,0);
5178 Explode(A, ';', S);
5179 if (length(A) < 3) then
5180 begin
5181 Explode(A, ',', S);
5182 end;
5183 if (A[0]=imorgenYmd) then
5184 begin
5185 if (length(A) > 2) then
5186 begin
5187 SetLength(ruteArray, linnr+1);
5188 SetLength(korelisteArray, linnr+1);
5189 ruteArray[linnr] := A[1];
5190 korelisteArray[linnr] := A[2];
5191 linnr := linnr+1;
5192 end;
5193 end;
5194 end;
5195 finally
5196 //ShowMessage(IntToStr(length(A)));
5197 CloseFile(SomeTxtFile);
5198 //ShowMessage(IntToStr(length(ruteArray)));
5199 if (linnr > 0) then
5200 begin
5201 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5202 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5203 SkrivScanningLogFil(logTekst);
5204 end
5205 else
5206 begin
5207 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5208 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5209 SkrivScanningLogFil(logTekst);
5210 PlaySound(PWideChar(AlarmLyd));
5211 end;
5212 end;
5213 end
5214 else
5215 begin
5216 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
5217 logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
5218 SkrivScanningLogFil(logTekst);
5219 PlaySound(PWideChar(AlarmLyd));
5220 end;
5221 end;
5222
5223 //
5224 // Bladhus ***
5225 //
5226 function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
5227 var
5228 i : Integer;
5229 svar : String;
5230
5231 begin
5232 //ShowMessage('Køreliste 1: '+korelisteArray[0]);
5233 // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
5234 // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
5235 //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
5236
5237 svar := 'Køreliste ikke i kontrolfil';
5238 case BladhusSted of
5239 01 :
5240 begin;
5241 for i := 0 to length(ruteArray)-1 do
5242 begin
5243 if (Koreliste=ruteArray[i]) then
5244 begin
5245 svar := korelisteArray[i]; // returnerer den forventede køreliste
5246 end;
5247 end;
5248 end;
5249 // 02 : begin;
5250 //ShowMessage('02') ;
5251 // end;
5252 03 : 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 // 04 : begin;
5262 //ShowMessage('04') ;
5263 // end;
5264 else
5265 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5266 end;
5267 if (RuteNummer = 'Rutenr') then // fra printertest funktionen
5268 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5269
5270 result := svar;
5271 end;
5272
5273 procedure TMainForm.VisAlarmSkaerm(var List1msg: string);
5274 begin
5275 //ShowMessage('Ændring ikke tilladt');
5276 // Her skal komme en 'rød skærm' alarm
5277 PlaySound(PWideChar(AlarmLyd));
5278 List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
5279 ListBox1.Items.Insert(0, List1Msg);
5280 MainForm.Color := clRed;
5281 RuteNummerST.Caption := '';
5282 BoghandlerNavnST.Caption := '';
5283 KommentarST.Caption := List1msg;
5284 PakkeshopNulstil.Visible := true;
5285 end;
5286
5287 function TMainForm.getProddato() : TDate;
5288 var
5289 idag, imorgen : TDateTime;
5290 imorgenYmd : string;
5291
5292 begin
5293 idag := Now;
5294 imorgen := IncDay(idag, 1); //adds 1 day(s)
5295 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5296 if (FormatDateTime('hh:nn',idag) < '12:00') then
5297 begin
5298 imorgen := idag;
5299 end;
5300 imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
5301 result := StrToDateTime(imorgenYmd);
5302 end;
5303
5304 function TMainForm.getProddag() : String;
5305 begin
5306 // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
5307 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
5308 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
5309 end;
5310
5311 function TMainForm.retRutenummer(rutenummer : String) : String;
5312 var
5313 i : Integer;
5314 svar : String;
5315
5316 begin
5317 svar := rutenummer;
5318 case BladhusSted of
5319 01 :
5320 begin;
5321 //ShowMessage('01') ;
5322 end;
5323 // 02 : begin;
5324 //ShowMessage('02') ;
5325 // end;
5326 03 : begin;
5327 for i := 0 to length(ruteHverdagArray)-1 do
5328 begin
5329 if (rutenummer=ruteHverdagArray[i]) then
5330 begin
5331 svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
5332 end;
5333 end;
5334 end;
5335 // 04 : begin;
5336 //ShowMessage('04') ;
5337 // end;
5338 else
5339 svar := rutenummer; // Dette svarer til at rute ikke skal ændres
5340 end;
5341 result := svar;
5342 end;
5343
5344 function TMainForm.GetCurrentPrinterHandle: THandle;
5345 var
5346 Device, Driver, Port: array[0..255] of Char;
5347 hDeviceMode: THandle;
5348 begin
5349 Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
5350 if not OpenPrinter(@Device, Result, nil) then
5351 RaiseLastWin32Error;
5352 end;
5353
5354 function TMainForm.SavePChar(p: PChar): PChar;
5355 const
5356 error: PChar = 'Nil';
5357 begin
5358 if not Assigned(p) then
5359 Result := error
5360 else
5361 Result := p;
5362 end;
5363
5364 procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5365 begin
5366 if Scanogstjekkoden1.Checked then
5367 begin
5368 chkScanTjekkode.Checked := true;
5369 end
5370 else
5371 begin
5372 chkScanTjekkode.Checked := false;
5373 end;
5374 end;
5375
5376 function TMainForm.AdobeReaderExists: Boolean;
5377 var
5378 AReg: TRegistry;
5379 begin
5380 result:= false;
5381 AReg := TRegistry.Create;
5382 AReg.RootKey := HKEY_LOCAL_MACHINE;
5383 if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then
5384 result:= True;
5385 AReg.Free;
5386 end;
5387
5388 procedure TMainForm.CheckPrintQue(tjektype : string);
5389 type
5390 TJobs = array [0..1000] of JOB_INFO_1;
5391 PJobs = ^TJobs;
5392 var
5393 hPrinter: THandle;
5394 bytesNeeded, numJobs, i: Cardinal;
5395 pJ: PJobs;
5396 printerTxt, statusTxt, dokumentTxt: String;
5397 begin
5398
5399 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1
5400 // 'Test' skal vise alarmlinie, samt opdatere listbox1
5401 // 'Timer' skal kun vise alarmlinie
5402
5403 if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5404 begin
5405 printerTxt := 'Der er fravalgt printer i dette program';
5406 ListBox1.Items.Insert(0,printerTxt);
5407 SkrivScanningLogFil(printerTxt);
5408 end
5409 else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5410 begin
5411 printerTxt := 'Der er ikke installeret en printer på denne PC';
5412 ListBox1.Items.Insert(0,printerTxt);
5413 SkrivScanningLogFil(printerTxt);
5414 end
5415 else
5416 begin
5417 hPrinter := GetCurrentPrinterHandle;
5418 try
5419 EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
5420 pJ := AllocMem(bytesNeeded);
5421 if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
5422 RaiseLastWin32Error;
5423
5424 if numJobs = 0 then
5425 begin
5426 if (tjektype = 'Test') then
5427 begin
5428 logTekst := printerTxt + ': Ingen dokumenter i kø';
5429 ListBox1.Items.Insert(0,logTekst);
5430 SkrivScanningLogFil(logTekst);
5431 end;
5432 PrinterstatusStaticText1.Caption := '';
5433 PrinterstatusStaticText1.Color := MainForm.Color;
5434 end
5435 else // så er der kø til printeren
5436 begin
5437 printerTxt := SavePChar(pJ^[0].pPrinterName);
5438 if (tjektype = 'Opstart') or (tjektype = 'Test') then
5439 begin
5440 logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;
5441 ListBox1.Items.Insert(0,logTekst);
5442 SkrivScanningLogFil(logTekst);
5443 end;
5444 for i := 0 to Pred(numJobs) do
5445 begin
5446 printerTxt := SavePChar(pJ^[i].pPrinterName);
5447 statusTxt := 'Ukendt';
5448 if (IntToStr(pJ^[i].Status) = '0') then
5449 statusTxt := 'Venter...';
5450 if (IntToStr(pJ^[i].Status) = '4096') then
5451 statusTxt := 'Printer...';
5452 if (IntToStr(pJ^[i].Status) = '8210') then
5453 statusTxt := 'Printerfejl';
5454 if (IntToStr(pJ^[i].Status) = '8214') then
5455 statusTxt := 'Sletter print...';
5456
5457 dokumentTxt := SavePChar(pJ^[i].pDocument);
5458 if (dokumentTxt = '') then
5459 dokumentTxt := 'Uden navn';
5460
5461 if (tjektype = 'Opstart') or (tjektype = 'Test') then
5462 begin
5463 logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',
5464 [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);
5465 ListBox1.Items.Insert(0,logTekst);
5466 SkrivScanningLogFil(logTekst);
5467 end;
5468
5469 if (i = 0) then
5470 begin
5471 PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;
5472 PrinterstatusStaticText1.Font.Color := clBlack;
5473 PrinterstatusStaticText1.Color := MainForm.Color;
5474 PrinterstatusStaticText1.Transparent := True;
5475 if (numJobs > 3) then
5476 begin
5477 PrinterstatusStaticText1.Font.Color := clRed;
5478 PrinterstatusStaticText1.Color := clWhite;
5479 PrinterstatusStaticText1.Transparent := true;
5480 end;
5481 end;
5482
5483 end;
5484 end
5485 finally
5486 ClosePrinter(hPrinter);
5487 end;
5488 end;
5489 end;
5490
5491 function TMainForm.CheckUrl(url:string):boolean;
5492 var
5493 hSession, hfile, hRequest: hInternet;
5494 dwindex,dwcodelen :dword;
5495 dwcode:array[1..20] of char;
5496 res : pchar;
5497 begin
5498 if pos('http://',lowercase(url))=0 then
5499 url := 'http://'+url;
5500 Result := false;
5501 hSession := InternetOpen('InetURL:/1.0',
5502 INTERNET_OPEN_TYPE_PRECONFIG,
5503 nil,
5504 nil,
5505 0);
5506 if assigned(hsession) then
5507 begin
5508 hfile := InternetOpenUrl(hsession,
5509 pchar(url),
5510 nil,
5511 0,
5512 INTERNET_FLAG_RELOAD,
5513 0);
5514 dwIndex := 0;
5515 dwCodeLen := 10;
5516 HttpQueryInfo(hfile,
5517 HTTP_QUERY_STATUS_CODE,
5518 @dwcode,
5519 dwcodeLen,
5520 dwIndex);
5521 res := pchar(@dwcode);
5522 result:= (res ='200') or (res ='302');
5523 if assigned(hfile) then
5524 InternetCloseHandle(hfile);
5525 InternetCloseHandle(hsession);
5526 end;
5527
5528 end;
5529
5530 // 20150310: start
5531 procedure TMainForm.RoundCornerOf(Control: TWinControl);
5532 var
5533 R: TRect;
5534 Rgn: HRGN;
5535 begin
5536 with Control do
5537 begin
5538 R := ClientRect;
5539 // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;
5540 rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;
5541 // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;
5542 Perform(EM_GETRECT, 0, lParam(@r)) ;
5543 InflateRect(r, - 4, - 4) ;
5544 Perform(EM_SETRECTNP, 0, lParam(@r)) ;
5545 SetWindowRgn(Handle, rgn, True) ;
5546 Invalidate;
5547 end;
5548 end;
5549 // 20150310: slut
5550
5551 end.
5552

  ViewVC Help
Powered by ViewVC 1.1.20