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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20