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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20