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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20