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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20