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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20