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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20