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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20