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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20