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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2678 - (show annotations) (download)
Wed Aug 26 13:20:47 2015 UTC (8 years, 8 months ago) by torben
File size: 195852 byte(s)
Ingen grund til at gemme     PakkeshopLabel: TPakkeshopLabel; som Medlem i TMainForm
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 function CheckSumModulo10(const data:string):string; { used for EAN 8/13 }
260
261 procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
262 procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
263 procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
264 procedure CheckCode();
265 procedure IndlesManglendeScanninger();
266 procedure IndlesRuteskiftFil(var filnavn : string);
267 procedure IndlesKontrolFil(var filnavn : string);
268 procedure IndlesScanningLogFil();
269 procedure SkrivScanningLogFil(var tekst : string);
270 function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
271 procedure VisAlarmSkaerm(strMessage: string);
272
273 public
274 { Public declarations }
275 end;
276
277 function GetPixelsPerInchX(): Integer;
278 function GetPixelsPerInchY(): Integer;
279
280 var
281 MainForm: TMainForm;
282
283 // Globale variabler
284 ruteHverdagArray : Array of String;
285 ruteLordagArray : Array of String;
286 ruteArray : Array of String;
287 korelisteArray : Array of String;
288 stregkoderMedTjekkodeArray : Array of String;
289
290 implementation
291 {$R *.dfm}
292
293 function TMainForm.TColorToHex(Color : TColor) : string;
294 begin
295 Result :=
296 IntToHex(GetRValue(Color), 2) +
297 IntToHex(GetGValue(Color), 2) +
298 IntToHex(GetBValue(Color), 2) ;
299 end;
300
301 function TMainForm.HexToTColor(sColor : string) : TColor;
302 begin
303 Result :=
304 RGB(
305 StrToInt('$'+Copy(sColor, 1, 2)),
306 StrToInt('$'+Copy(sColor, 3, 2)),
307 StrToInt('$'+Copy(sColor, 5, 2))
308 ) ;
309 end;
310
311 procedure TMainForm.InitForm(Farve,Titel,Url : String);
312 begin
313
314 // 20150309: startr
315 StaticTextManglendePakker.Caption := '';
316 // 20150309: slut
317
318 Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component
319
320 PanelValg1.Color := clBtnFace;
321 if PanelValg1.Enabled = true then
322 begin
323 PanelValg1.Font.Color := clWindowText;
324 end;
325
326 PanelValg2.Color := clBtnFace;
327 if PanelValg2.Enabled = true then
328 begin
329 PanelValg2.Font.Color := clWindowText;
330 end;
331
332 PanelValg3.Color := clBtnFace;
333 if PanelValg3.Enabled = true then
334 begin
335 PanelValg3.Font.Color := clWindowText;
336 end;
337
338 PanelValg4.Color := clBtnFace;
339 if PanelValg4.Enabled = true then
340 begin
341 PanelValg4.Font.Color := clWindowText;
342 end;
343
344 PanelValg5.Color := clBtnFace;
345 if PanelValg5.Enabled = true then
346 begin
347 PanelValg5.Font.Color := clWindowText;
348 end;
349
350 PanelValg6.Color := clBtnFace;
351 if PanelValg6.Enabled = true then
352 begin
353 PanelValg6.Font.Color := clWindowText;
354 end;
355
356 PanelValg7.Color := clBtnFace;
357 if PanelValg7.Enabled = true then
358 begin
359 PanelValg7.Font.Color := clWindowText;
360 end;
361
362 OpdaterListenButton01.Enabled := false;
363
364 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
365 begin
366 if (StedNavn = '') then
367 begin
368 Titel := BladhusStedNavn[BladhusSted]+': '+Titel;
369 end
370 else
371 begin
372 Titel := StedNavn+': '+Titel;
373 end;
374 //Farve := 'D8D8D8'; // her kan vi evt. overrule ini fil
375 end
376 else
377 begin
378 //ShowMessage(Sted);
379 if (StedNavn = '') then
380 begin
381 if (Sted = 'B') then
382 begin StedNavn := 'Brabrand: '; end
383 else if (Sted = 'E') then
384 begin StedNavn := 'Erritsø: '; end
385 else if (Sted = 'AAL') then
386 begin StedNavn := 'Aalborg: '; end
387 else if (Sted = 'BR') then
388 begin StedNavn := 'Brøndby: '; end
389 else if (Sted = 'BK') then
390 begin StedNavn := 'Bladkompagniet: '; end
391 else if (Sted = 'DBK') then
392 begin StedNavn := 'DBK Køge: '; end
393 else if (Sted = '1') then
394 begin StedNavn := 'Ålborg: '; end
395 else if (Sted = '2') then
396 begin StedNavn := 'Herning: '; end
397 else if (Sted = '3') then
398 begin StedNavn := 'Hinnerup: '; end
399 else if (Sted = '4') then
400 begin StedNavn := 'Vejle: '; end
401 else
402 begin StedNavn := Sted+': '; end
403 end
404 else
405 begin
406 if (RightStr(StedNavn,2) <> ': ') then
407 begin
408 StedNavn := StedNavn + ': ';
409 end;
410 end;
411 Titel := Stednavn + Titel;
412 end;
413
414 StartScreen();
415 MainForm.Caption := Titel;
416 MainForm.Color := HexToTColor(Farve);
417 MainForm.Farve := Farve;
418 MainForm.Titel := Titel;
419 MainForm.Url := Url;
420
421 if PrinterstatusStaticText1.Color <> clWhite then // Hvis der IKKE er en alarm skal vi tilpasse baggrundsfarven her
422 begin
423 PrinterstatusStaticText1.Color := MainForm.Color;
424 end;
425
426 if PakkeshopLevering1.Checked or Pakkernormal1.Checked then
427 PakkeshopText1.Visible := true
428 else
429 PakkeshopText1.Visible := false;
430
431 chkScanTjekkode.Checked := false;
432 chkScanTjekkode.Enabled := false;
433 Scanogstjekkoden1.Enabled := false;
434
435 if (Scanningtype = '1') or (Scanningtype = '5') then
436 begin
437 if (ScanTjekkode = '1') then
438 begin
439 chkScanTjekkode.Checked := true;
440 chkScanTjekkode.Enabled := true;
441 Scanogstjekkoden1.Enabled := true;
442 end
443 else
444 begin
445 chkScanTjekkode.Checked := false;
446 chkScanTjekkode.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
447 Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
448 end;
449 end;
450
451 if Automatisktjekkodestyring1.Checked then
452 begin
453 chkScanTjekkode.Enabled := false;
454 Scanogstjekkoden1.Enabled := false;
455 end;
456
457 logTekst := 'Overskrift: '+Titel;
458 SkrivScanningLogFil(logTekst);
459
460 if SpecialVersionSted = '' then
461 begin
462 logTekst := 'Sted: '+Sted+', Stednavn: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase]);
463 SkrivScanningLogFil(logTekst);
464 end;
465
466 if SpecialVersionSted <> '' then
467 begin
468 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
469 begin
470 if Stednavn = '' then
471 begin
472 logTekst := 'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
473 end
474 else
475 begin
476 logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';
477 end;
478 SkrivScanningLogFil(logTekst);
479 end
480 else
481 begin
482 logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';
483 SkrivScanningLogFil(logTekst);
484 end;
485 end;
486
487 end;
488
489 procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
490 begin
491
492 if Altidprintepakkelabel1.Checked then
493 begin
494 chkAltidPrintLabel.Checked := true;
495 end
496 else
497 begin
498 chkAltidPrintLabel.Checked := false;
499 end;
500
501 end;
502
503 procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
504 begin
505 StregkodeST.Caption := Stregkode;
506 end;
507
508 procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);
509 begin
510 if Automatisktjekkodestyring1.Checked then
511 begin
512 chkScanTjekkode.Enabled := false;
513 Scanogstjekkoden1.Enabled := false;
514 end
515 else
516 begin
517 chkScanTjekkode.Enabled := true;
518 Scanogstjekkoden1.Enabled := true;
519 end;
520
521 end;
522
523 procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
524 begin
525 // 20150317: start
526 (*
527 if Automatiskvalg1.Checked then
528 begin
529 AutomatiskValg1.Checked := true;
530 PanelValgA.Color := clGreen;
531 PanelValgA.Font.Color := clWhite;
532 end
533 else
534 begin
535 AutomatiskValg1.Checked := false;
536 PanelValgA.Color := clBtnFace;
537 PanelValgA.Font.Color := clWindowText;
538 end;
539 *)
540 // Skal ikke toggle men bare sætte funktionen on
541 // Fravælges ved at vælge en scanningstype
542 AutomatiskValg1.Checked := true;
543 PanelValgA.Color := clGreen;
544 PanelValgA.Font.Color := clWhite;
545 // 20150317: slut
546 end;
547
548 procedure TMainForm.FormCreate(Sender: TObject);
549 const
550 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
551 var
552 printerInd : integer;
553 gemScanningtype : String;
554
555 begin
556 // Initierer nogle variabler
557 BladhusSted := 00;
558 Application.ShowHint := True;
559 PrinterstatusStaticText1.Caption := '';
560 PrinterstatusStaticText1.Color := MainForm.Color;
561
562 btnNulstil.BringToFront;
563
564 RoundCornerOf(PanelManglendePakker1);
565 RoundCornerOf(PanelManglendePakker2);
566 RoundCornerOf(PanelManglendePakker3);
567 RoundCornerOf(PanelManglendePakker4);
568 RoundCornerOf(PanelManglendePakker5);
569 RoundCornerOf(PanelManglendePakker6);
570
571
572 // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
573 if DirectoryExists('Docs') then
574 begin
575 Manualgenerel1.Enabled := true;
576 Manual1.Enabled := true;
577 end;
578
579 // Sætter lige en default panel størrelse
580 MainForm.ClientWidth := 1000;
581 MainForm.ClientHeight := 750;
582
583 // Læser parametre fra ini filen
584 with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
585 try
586 SkrivLog := ReadString('Settings','SkrivLog','0');
587 Sted := ReadString('Settings','Sted','');
588 StedNavn := ReadString('Settings','Stednavn','');
589 UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
590 UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
591 UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
592 UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
593 UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
594 UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
595 UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
596 UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
597
598 UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
599
600 UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
601 UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
602 UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
603 UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
604
605 UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
606
607
608 LabelType := ReadInteger('Settings','LabelType',1);
609 FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
610 TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
611 FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
612 TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');
613 FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');
614 TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');
615 FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');
616 TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
617 FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
618 TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
619
620 FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
621 TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
622
623 FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
624 TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
625
626
627 SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
628 ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
629 ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
630 Scanningtype := ReadString('Settings','Scanningtype','A');
631 Pakketype := ReadString('Settings','Pakketype','0');
632 TestFunktionen := ReadString('Settings','TestFunktion','0');
633 AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
634 ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
635 ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
636
637 ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
638
639 PrinterNavn := ReadString('Settings','PrinterNavn','');
640 TjekPrinter := ReadString('Settings','TjekPrinter','1');
641 TjekUrls := ReadString('Settings','TjekUrls','2');
642
643 if (SkrivLog = '1') then
644 begin
645 logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
646 try
647 SkrivScanningLogFil(logTekst);
648 Uploadlogfil1.Enabled := true;
649 UploadButton01.Enabled := true;
650 logTekst := 'Programmet er installeret som: '+ParamStr(0);
651 SkrivScanningLogFil(logTekst);
652 // Oprydning i gamle logfiler
653 SletLogfiler('Logs\', ListBox1.Items);
654 except
655 SkrivLog := '0';
656 end;
657 end;
658
659 if Scanningtype = 'A' then
660 begin
661 Automatiskvalg1.Checked := true;
662 Scanningtype := '1';
663 PanelValgA.Color := clGreen;
664 PanelValgA.Font.Color := clWhite;
665 end;
666
667 if LabelType = 0 then
668 begin
669 XPosRute := ReadInteger('RuteBred','XPos',1);
670 YPosRute := ReadInteger('RuteBred','YPos',1);
671 FontSizeRute := ReadInteger('RuteBred','FontSize',72);
672 FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);
673 XPosKommentar := ReadInteger('KommentarBred','XPos',1);
674 YPosKommentar := ReadInteger('KommentarBred','YPos',250);
675 FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);
676 XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);
677 YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);
678 FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);
679 XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);
680 YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);
681 FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);
682 FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);
683 XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);
684 YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);
685 FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);
686 XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);
687 YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);
688 FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);
689 XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);
690 YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);
691 FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);
692 end
693 else
694 begin
695 XPosRute := ReadInteger('RuteSmal','XPos',1);
696 YPosRute := ReadInteger('RuteSmal','YPos',1);
697 FontSizeRute := ReadInteger('RuteSmal','FontSize',72);
698 FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);
699 XPosKommentar := ReadInteger('KommentarSmal','XPos',1);
700 YPosKommentar := ReadInteger('KommentarSmal','YPos',250);
701 FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);
702 XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);
703 YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);
704 FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);
705 XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);
706 YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);
707 FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);
708 FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);
709 XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);
710 YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);
711 FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);
712 XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);
713 YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);
714 FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);
715 XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);
716 YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);
717 FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);
718 if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3
719 begin
720 XPosRute := XPosRute * 3;
721 YPosRute := YPosRute * 3;
722 XPosKommentar := XPosKommentar * 3;
723 YPosKommentar := YPosKommentar * 3;
724 XPosBoghandler := XPosBoghandler * 3;
725 YPosBoghandler := YPosBoghandler * 3;
726 XPosKoreliste := XPosKoreliste * 3;
727 YPosKoreliste := YPosKoreliste * 3;
728 XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;
729 YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;
730 XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;
731 YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;
732 XPosSmskode := XPosSmskode * 3;
733 YPosSmskode := YPosSmskode * 3;
734 end;
735 end;
736
737 if SporgEfterBoghandler = '1' then
738 begin
739 chkSporgEfterKunde.Checked := true;
740 Sprgefterboghandlernummer1.Checked := true;
741 end
742 else
743 begin
744 chkSporgEfterKunde.Checked := false;
745 Sprgefterboghandlernummer1.Checked := false;
746 end;
747
748 if ScanTjekkode = '1' then
749 begin
750 chkScanTjekkode.Checked := true;
751 Scanogstjekkoden1.Checked := true;
752 end
753 else
754 begin
755 chkScanTjekkode.Checked := false;
756 Scanogstjekkoden1.Checked := false;
757 end;
758
759 if ScanTjekkodeAutomatik = '1' then
760 begin
761 Automatisktjekkodestyring1.Checked := true;
762 chkScanTjekkode.Enabled := false;
763 Scanogstjekkoden1.Enabled := false;
764 end;
765
766 //
767 // specialversioner
768 //
769 // Hvis programmet skal bruges af andre distributører/scanningssteder end DAO
770 // skal vi ikke bruge hele ini-filen.
771 // Vi laver derfor en speciel opsætning her.
772
773 SpecialVersionSted := ''; // Tom indikerer normal version hvor scanningtype er angivet i ini filen
774 SpecialVersionScanningtype := 'A'; // 'Automatisk valg'
775 // bruges sammen med nedenstående SpecialVersionSted for specialversioner af programmet
776
777 // Ved compilering af en specialversion skal efterfølgende
778 // 2 felter sættes efter behov (SpecialVersionSted og SpecialVersionScanningtype).
779 // Det er p.t. ikke nødvendigt at ændre andre steder...
780
781 // *************************** //
782 //SpecialVersionSted := 'BK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
783 //SpecialVersionSted := 'DBK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
784 //SpecialVersionSted := 'NS'; // NS - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
785 //SpecialVersionSted := 'FD'; // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
786 // *************************** //
787
788 //SpecialVersionSted := '01'; // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
789 //SpecialVersionSted := '02'; // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
790 //SpecialVersionSted := '03'; // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
791 //SpecialVersionSted := '04'; // DBK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted DBK)
792
793 //SpecialVersionScanningtype := '1'; // NAT X-PRESS (BRUGES IKKE)
794 //SpecialVersionScanningtype := '2'; // Retur fra DAO (BRUGES IKKE)
795 //SpecialVersionScanningtype := '3'; // Retur fra Kunde (BRUGES IKKE)
796 //SpecialVersionScanningtype := '4'; // DIREKTE
797 //SpecialVersionScanningtype := '5'; // PAKKESHOP (BRUGES IKKE)
798 //SpecialVersionScanningtype := '6'; // Retur fra pakkeshop (BRUGES IKKE)
799
800 // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
801 // ændrer vi Sted og Scanningtype her:
802
803 // 20150313: start
804 if SpecialVersionSted = 'NS' then
805 begin
806 SpecialVersionSted := '01';
807 SpecialVersionScanningtype := '4';
808 end;
809 if SpecialVersionSted = 'FD' then
810 begin
811 SpecialVersionSted := '03';
812 SpecialVersionScanningtype := '4';
813 end;
814 // 20150313: slut
815
816 if SpecialVersionSted = 'BK' then
817 begin
818 //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
819 Sted := SpecialVersionSted;
820 // her skal vi også disable de knapper BK ikke kan bruge
821 PanelValg2.Enabled := false;
822 PanelValg2.Font.Color := clInactiveCaption;
823 PanelValg3.Enabled := false;
824 PanelValg3.Font.Color := clInactiveCaption;
825 PanelValg6.Enabled := false;
826 PanelValg6.Font.Color := clInactiveCaption;
827 // her skal vi også disable de menupunkter BK ikke kan bruge
828 ReturpakkerfraDAO1.Enabled := false;
829 Returpakkerfraboghandler1.Enabled := false;
830 Returpakkerfrapakkeshop1.Enabled := false;
831 if SpecialVersionScanningtype = 'A' then
832 begin
833 Scanningtype := '1';
834 end
835 else
836 begin
837 Scanningtype := SpecialVersionScanningtype;
838 end;
839 end;
840
841 if SpecialVersionSted = 'DBK' then
842 begin
843 //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
844 Sted := SpecialVersionSted;
845 // her skal vi også disable de knapper DBK ikke kan bruge
846 PanelValg2.Enabled := false;
847 PanelValg2.Font.Color := clInactiveCaption;
848 PanelValg3.Enabled := false;
849 PanelValg3.Font.Color := clInactiveCaption;
850 PanelValg5.Enabled := false;
851 PanelValg5.Font.Color := clInactiveCaption;
852 PanelValg6.Enabled := false;
853 PanelValg6.Font.Color := clInactiveCaption;
854 PanelValg7.Enabled := false;
855 PanelValg7.Font.Color := clInactiveCaption;
856
857 // her skal vi også disable de menupunkter DBK ikke kan bruge
858 ReturpakkerfraDAO1.Enabled := false;
859 Returpakkerfraboghandler1.Enabled := false;
860
861 Pakkeshoplevering1.Enabled := false;
862 Returpakkerfrapakkeshop1.Enabled := false;
863
864 if SpecialVersionScanningtype = 'A' then
865 begin
866 Scanningtype := '1';
867 end
868 else
869 begin
870 Scanningtype := SpecialVersionScanningtype;
871 end;
872 end;
873
874 if (SpecialVersionSted = '01')
875 or (SpecialVersionSted = '02')
876 or (SpecialVersionSted = '03')
877 or (SpecialVersionSted = '04') then
878 begin
879 BladhusSted := StrToInt(SpecialVersionSted);
880 // her skal vi også disable de knapper 01, 02, 03 og 04 (NS, BK, FD og DBK) ikke kan bruge
881 PanelValg1.Enabled := false;
882 PanelValg1.Font.Color := clInactiveCaption;
883 PanelValg2.Enabled := false;
884 PanelValg2.Font.Color := clInactiveCaption;
885 PanelValg3.Enabled := false;
886 PanelValg3.Font.Color := clInactiveCaption;
887 PanelValg4.Enabled := false;
888 PanelValg4.Font.Color := clInactiveCaption;
889 PanelValg5.Enabled := false;
890 PanelValg5.Font.Color := clInactiveCaption;
891 PanelValg6.Enabled := false;
892 PanelValg6.Font.Color := clInactiveCaption;
893 PanelValg7.Enabled := false;
894 PanelValg7.Font.Color := clInactiveCaption;
895 // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
896
897 Automatiskvalg1.Enabled := false;
898
899 Pakkernormal1.Enabled := false;
900 ReturpakkerfraDAO1.Enabled := false;
901 Returpakkerfraboghandler1.Enabled := false;
902 Budlevering1.Enabled := false;
903 Pakkeshoplevering1.Enabled := false;
904 Returpakkerfrapakkeshop1.Enabled := false;
905 if SpecialVersionScanningtype = 'A' then
906 begin
907 Scanningtype := '4';
908 Budlevering1.Enabled := true;
909 PanelValg4.Font.Color := clWindowText;
910 PanelValg4.Enabled := true;
911 end
912 else
913 begin
914 Scanningtype := SpecialVersionScanningtype;
915 PanelValgA.Enabled := false;
916 PanelValgA.Font.Color := clInactiveCaption;
917 AutomatiskValg1.Checked := false;
918 PanelValgA.Color := clBtnFace;
919 if Scanningtype = '1' then
920 begin
921 Pakkernormal1.Enabled := true;
922 PanelValg1.Enabled := true;
923 PanelValg1.Font.Color := clWindowText;
924 end;
925 if Scanningtype = '2' then
926 begin
927 ReturpakkerfraDAO1.Enabled := true;
928 PanelValg2.Enabled := true;
929 PanelValg2.Font.Color := clWindowText;
930 end;
931 if Scanningtype = '3' then
932 begin
933 Returpakkerfraboghandler1.Enabled := true;
934 PanelValg3.Enabled := true;
935 PanelValg3.Font.Color := clWindowText;
936 end;
937 if Scanningtype = '4' then
938 begin
939 Budlevering1.Enabled := true;
940 PanelValg4.Enabled := true;
941 PanelValg4.Font.Color := clWindowText;
942 end;
943 if Scanningtype = '5' then
944 begin
945 Pakkeshoplevering1.Enabled := true;
946 PanelValg5.Enabled := true;
947 PanelValg5.Font.Color := clWindowText;
948 end;
949 if Scanningtype = '6' then
950 begin
951 Returpakkerfrapakkeshop1.Enabled := true;
952 PanelValg6.Enabled := true;
953 PanelValg6.Font.Color := clWindowText;
954 end;
955 end;
956 Sted := SysUtils.Format('%.*d', [2, BladhusSted]);
957 //FarveBudlevering := '2E9AFE'; // her kan vi evt. overrule ini fil
958 end;
959
960 SetLength(BladhusStedNavn, 5);
961 SetLength(BladhusStedKode, 5);
962 BladhusStedNavn[00] := 'bruges ikke';
963 BladhusStedKode[00] := '';
964 BladhusStedNavn[01] := 'Nordjyske';
965 BladhusStedKode[01] := 'NS';
966 BladhusStedNavn[02] := 'Bladkompagniet';
967 BladhusStedKode[02] := 'BK';
968 BladhusStedNavn[03] := 'Fyens Distribution';
969 BladhusStedKode[03] := 'FD';
970 BladhusStedNavn[04] := 'DBK Køge';
971 BladhusStedKode[04] := 'DBK';
972
973 if (Trim(Sted) = '')
974 or (Length(Sted) > 3) then
975 begin
976 ShowMessage('Scanningsted "' + Sted + '" er ukendt - programmet afbrydes...');
977 Application.Terminate;
978 end;
979
980 if TjekUrls = '1' then // Tjekker urls
981 begin
982 TjekkerUrls();
983 if TjekUrls = '-' then // så var der fejl i url - så vi stopper her
984 begin
985 PlaySound(PWideChar(AlarmLyd));
986 MainForm.Color := clRed;
987 RutenummerST.Caption := '';
988 BoghandlerNavnST.Caption := 'Fejl i urls';
989 KommentarST.Caption := 'Se log vinduet';
990 btnNulstil.Visible := true;
991 exit;
992 end;
993 end
994 else
995 begin // Tjekker ikke urls
996 logTekst := 'Tjekker IKKE urls i denne afvikling.';
997 SkrivScanningLogFil(logTekst);
998 end;
999
1000 if Scanningtype = '6' then
1001 begin
1002 InitReturFraPakkeshop();
1003 end
1004 else if Scanningtype = '5' then
1005 begin
1006 InitPakkeshoplevering();
1007 end
1008 else if Scanningtype = '4' then
1009 begin
1010 InitDirektelevering();
1011 end
1012 else if Scanningtype = '3' then
1013 begin
1014 InitReturFraKunde();
1015 end
1016 else if Scanningtype = '2' then
1017 begin
1018 InitReturFraDao();
1019 end
1020 else if (Scanningtype = '1') then
1021 begin
1022 InitNatxpressLevering();
1023 end
1024 else
1025 begin
1026 ShowMessage('Scanningtype er af ukendt type - programmet afbrydes...');
1027 Application.Terminate;
1028 end;
1029
1030 if Pakketype = '1' then
1031 begin
1032 Storepakker1.Checked := true;
1033 radioStorPakke.Checked := true;
1034 end
1035 else
1036 begin
1037 Smpakker1.Checked := true;
1038 radioLillePakke.Checked := true;
1039 end;
1040
1041 if TestFunktionen = '1' then
1042 begin
1043 Testforbindelsen1.Visible := true;
1044 Testprinter1.Visible := true;
1045 Testlyd1.Visible := true;
1046 Testlyd2.Visible := true;
1047 end
1048 else if TestFunktionen = '2' then
1049 begin
1050 Testforbindelsen1.Enabled := false;
1051 Testprinter1.Enabled := false;
1052 Testlyd1.Enabled := false;
1053 Testlyd2.Enabled := false;
1054 end
1055 else
1056 begin
1057 Testforbindelsen1.Visible := false;
1058 Testprinter1.Visible := false;
1059 Testlyd1.Visible := false;
1060 Testlyd2.Visible := false;
1061 end;
1062
1063 if not FileExists(AlarmLyd) then
1064 begin
1065 AlarmLyd := '';
1066 end;
1067
1068 if not FileExists(ScannetOkLyd) then
1069 begin
1070 ScannetOkLyd := '';
1071 end;
1072
1073 if not FileExists(ScannetOkStorLyd) then
1074 begin
1075 ScannetOkStorLyd := '';
1076 end;
1077
1078
1079 if not FileExists(ScannetOkTilTjekkodeLyd) then
1080 begin
1081 ScannetOkTilTjekkodeLyd := '';
1082 end;
1083
1084
1085 if (PrinterNavn <> '') then
1086 begin
1087 printerInd := Printer.Printers.IndexOf(printerNavn);
1088 if printerInd >= 0 then
1089 Printer.PrinterIndex := printerInd;
1090 end;
1091
1092 CheckPrintQue('Opstart');
1093
1094 finally
1095 Free;
1096 end;
1097
1098 // UBD skal p.t. ikke have adgang til flg. funktioner
1099 if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
1100 begin
1101 ReturpakkerfraDAO1.Visible := false;
1102 Returpakkerfraboghandler1.Visible := false;
1103 Budlevering1.Visible := false;
1104 Storepakker1.Visible := false;
1105 Smpakker1.Visible := false;
1106 Testprinter1.Visible := false;
1107 Pakkeshoplevering1.Visible := false;
1108 Returpakkerfrapakkeshop1.Visible := false;
1109 end;
1110
1111 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
1112 begin
1113 InitBladhus();
1114 end;
1115
1116
1117 // Opbygger PanelManglendePakker information
1118 gemScanningtype := Scanningtype;
1119
1120 if PanelValg6.Enabled then
1121 begin
1122 Scanningtype := '6';
1123 IndlesManglendeScanninger();
1124 end;
1125
1126 if PanelValg5.Enabled then
1127 begin
1128 Scanningtype := '5';
1129 IndlesManglendeScanninger();
1130 end;
1131
1132 if PanelValg4.Enabled then
1133 begin
1134 Scanningtype := '4';
1135 IndlesManglendeScanninger();
1136 end;
1137
1138 if PanelValg3.Enabled then
1139 begin
1140 Scanningtype := '3';
1141 IndlesManglendeScanninger();
1142 end;
1143
1144 if PanelValg2.Enabled then
1145 begin
1146 Scanningtype := '2';
1147 IndlesManglendeScanninger();
1148 end;
1149
1150 if PanelValg1.Enabled then
1151 begin
1152 Scanningtype := '1';
1153 IndlesManglendeScanninger();
1154 end;
1155
1156 Scanningtype := gemScanningtype;
1157
1158 SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1159 SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));
1160
1161 end;
1162
1163 procedure TMainForm.FormDestroy(Sender: TObject);
1164 begin
1165 logTekst := 'Program slut';
1166 SkrivScanningLogFil(logTekst);
1167 SendInfoTilServer(Sted, Scanningtype, 'End', '');
1168 end;
1169
1170 procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
1171 var
1172 RuteNummer : String;
1173 Kommentar : String;
1174 BoghandlerNavn : String;
1175 Koreliste : String;
1176 PrintNyLabel : Boolean;
1177 pakkeErScannet : Integer;
1178 pakkeForkertSted : Integer;
1179 tjekkodeMangler : Integer;
1180 SmsKode : String;
1181 DBKbane : String;
1182 Leveringssted : String;
1183 i : Integer;
1184 ClipboardData : String;
1185 numberString : string;
1186 float : Extended;
1187 errorPos : Integer;
1188 GemStregkode : String;
1189 WebSvar : String;
1190 URLStr : String;
1191 Pakketype : String;
1192 Pakkescanningtype : String;
1193
1194 begin
1195
1196 if Key = #22 then // ctrl-v
1197 begin
1198 ClipboardData := Clipboard.AsText;
1199 numberString := ClipboardData;
1200 Val(numberString, float, errorPos);
1201
1202 // if (ClipboardData <> '') and (errorPos = 0) then
1203 if (ClipboardData <> '') and (errorPos = 0)
1204 or (NumberString = 'Nulstil')
1205 or (NumberString = 'Indtast kundenummer')
1206 or (NumberString = 'Stor pakke')
1207 or (NumberString = 'Lille pakke')
1208 or (NumberString = 'Scan tjekkode')
1209 or (NumberString = 'Automatisk valg')
1210 or (NumberString = 'DAO NAT X-PRESS')
1211 or (NumberString = 'DAO NAT X+PRESS') // 20150323: pga stregkode programmet bruger et forkert karaktersæt
1212 or (NumberString = 'Retur fra DAO')
1213 or (NumberString = 'Retur fra kunde')
1214 or (NumberString = 'DAO DIREKTE')
1215 or (NumberString = 'DAO PAKKESHOP')
1216 or (NumberString = 'Retur fra pakkeshop') then
1217
1218 begin
1219 Stregkode := Stregkode + ClipboardData;
1220 StregkodeST.Caption := StregKode;
1221 end
1222 else
1223 begin
1224 ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1225 end;
1226 end;
1227
1228 if Key = #13 then // Enter
1229 begin
1230 if (Length(Trim(Stregkode)) = 0) then
1231 begin
1232 VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1233
1234 exit;
1235 end;
1236
1237 if StregKode = 'Nulstil' then
1238 begin
1239 btnNulstil.Click();
1240 exit;
1241 end;
1242
1243 if btnNulstil.Visible then
1244 begin
1245 VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1246
1247 exit;
1248 end;
1249
1250 if StregKode = 'Lille pakke' then
1251 begin
1252 if radioLillePakke.Enabled = true then
1253 begin
1254 InitLillePakke();
1255 end
1256 else
1257 begin
1258 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1259 end;
1260 Stregkode := '';
1261 StregkodeST.Caption := StregKode;
1262 exit;
1263 end;
1264
1265 if StregKode = 'Stor pakke' then
1266 begin
1267 if radioStorPakke.Enabled = true then
1268 begin
1269 InitStorPakke();
1270 end
1271 else
1272 begin
1273 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1274 end;
1275 Stregkode := '';
1276 StregkodeST.Caption := StregKode;
1277 exit;
1278 end;
1279
1280 if StregKode = 'Indtast kundenummer' then
1281 begin
1282 if chkSporgEfterKunde.Enabled = true then
1283 begin
1284 if (chkSporgEfterKunde.State = cbChecked) then
1285 begin
1286 chkSporgEfterKunde.State := cbUnchecked;
1287 end
1288 else
1289 begin
1290 chkSporgEfterKunde.State := cbChecked;
1291 end;
1292 end
1293 else
1294 begin
1295 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1296 end;
1297 Stregkode := '';
1298 StregkodeST.Caption := StregKode;
1299 exit;
1300 end;
1301
1302 if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1303 begin
1304 if chkScanTjekkode.Enabled = true then
1305 begin
1306 if (chkScanTjekkode.State = cbChecked) then
1307 begin
1308 chkScanTjekkode.State := cbUnchecked;
1309 end
1310 else
1311 begin
1312 chkScanTjekkode.State := cbChecked;
1313 end;
1314 end
1315 else
1316 begin
1317 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1318 end;
1319 Stregkode := '';
1320 StregkodeST.Caption := StregKode;
1321 exit;
1322 end;
1323
1324 if StregKode = 'Automatisk valg' then
1325 begin
1326 if (PanelValgA.Enabled = true) then
1327 begin
1328 PanelValgAClick(PanelValgA);
1329 end
1330 else
1331 begin
1332 VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
1333 end;
1334 Stregkode := '';
1335 StregkodeST.Caption := StregKode;
1336 exit;
1337 end;
1338
1339
1340 if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
1341 begin
1342 if (PanelValg1.Enabled = true) then
1343 begin
1344 PanelValg1Click(PanelValg1);
1345 end
1346 else
1347 begin
1348 VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
1349 end;
1350 Stregkode := '';
1351 StregkodeST.Caption := StregKode;
1352 exit;
1353 end;
1354
1355 if StregKode = 'Retur fra DAO' then
1356 begin
1357 if (PanelValg2.Enabled = true) then
1358 begin
1359 PanelValg2Click(PanelValg2);
1360 end
1361 else
1362 begin
1363 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1364 end;
1365 Stregkode := '';
1366 StregkodeST.Caption := StregKode;
1367 exit;
1368 end;
1369
1370 if StregKode = 'Retur fra kunde' then
1371 begin
1372 if (PanelValg3.Enabled = true) then
1373 begin
1374 PanelValg3Click(PanelValg3);
1375 end
1376 else
1377 begin
1378 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1379 end;
1380 Stregkode := '';
1381 StregkodeST.Caption := StregKode;
1382 exit;
1383 end;
1384
1385 if StregKode = 'DAO DIREKTE' then
1386 begin
1387 if (PanelValg4.Enabled = true) then
1388 begin
1389 PanelValg4Click(PanelValg4);
1390 end
1391 else
1392 begin
1393 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1394 end;
1395 Stregkode := '';
1396 StregkodeST.Caption := StregKode;
1397 exit;
1398 end;
1399
1400 if StregKode = 'DAO PAKKESHOP' then
1401 begin
1402 if (PanelValg5.Enabled = true) then
1403 begin
1404 PanelValg5Click(PanelValg5);
1405 end
1406 else
1407 begin
1408 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1409 end;
1410 Stregkode := '';
1411 StregkodeST.Caption := StregKode;
1412 exit;
1413 end;
1414
1415 if StregKode = 'Retur fra pakkeshop' then
1416 begin
1417 if (PanelValg6.Enabled = true) then
1418 begin
1419 PanelValg6Click(PanelValg6);
1420 end
1421 else
1422 begin
1423 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1424 end;
1425 Stregkode := '';
1426 StregkodeST.Caption := StregKode;
1427 exit;
1428 end;
1429
1430
1431 if (Length(Stregkode) > 8) then
1432 begin
1433 // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1434 URLStr := Format(UrlFindPakketype,[Stregkode]);
1435 try
1436 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1437 WebSvar := IdHTTP1.Get(URLStr);
1438 //IdHTTP1.Disconnect();
1439 except on e:EIdConnClosedGracefully do
1440 begin
1441 // Her skal vi ikke gøre noget - men vi skal forespørge igen
1442 logTekst := 'EIdConnClosedGracefully i FindPakketype';
1443 SkrivScanningLogFil(logTekst);
1444 try
1445 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1446 WebSvar := IdHTTP1.Get(URLStr);
1447 except on e:EIdConnClosedGracefully do
1448 begin
1449 logTekst := 'EIdConnClosedGracefully i FindPakketype igen';
1450 SkrivScanningLogFil(logTekst);
1451 WebSvar := IdHTTP1.Get(URLStr);
1452 end;
1453 end;
1454 end;
1455 end;
1456 XMLDocument1.LoadFromXML(WebSvar);
1457 try
1458 Pakketype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeType').Text;
1459 except on e:exception do
1460 Pakketype := 'Ukendt';
1461 end;
1462 try
1463 Pakkescanningtype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeScanningtype').Text;
1464 except on e:exception do
1465 Pakketype := 'Ukendt';
1466 end;
1467 if Pakketype = 'Ukendt' then
1468 begin
1469 Pakkescanningtype := Scanningtype;
1470 end;
1471 end
1472 else
1473 begin
1474 Pakkescanningtype := Scanningtype;
1475 end;
1476
1477 if ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)
1478 or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)
1479 or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)
1480 or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)
1481 or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)
1482 or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) then
1483 begin // Her skal komme en alarm og rød skærm
1484 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1485
1486 exit;
1487 end;
1488
1489 if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then
1490 begin
1491 GemStregkode := Stregkode;
1492 if Pakketype = 'NatXpress' then
1493 begin
1494 if Scanningtype <> '1' then
1495 begin
1496 Scanningtype := '1';
1497 InitNatxpresslevering();
1498 end;
1499 end
1500 // Retur kan ikke scannes med 'Automatisk valg'
1501
1502 else if Pakketype = 'Direkte' then
1503 begin
1504 if Scanningtype <> '4' then
1505 begin
1506 Scanningtype := '4';
1507 InitDirektelevering();
1508 end;
1509 end
1510 else if Pakketype = 'Pakkeshop' then
1511 begin
1512 if Scanningtype <> '5' then
1513 begin
1514 Scanningtype := '5';
1515 InitPakkeshoplevering();
1516 end;
1517 end
1518 // Retur kan ikke scannes med 'Automatisk valg'
1519
1520 else
1521 begin
1522 // Her skal komme en alarm og rød skærm
1523 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1524
1525 exit;
1526 end;
1527 Stregkode := GemStregkode;
1528 end
1529 else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1530 begin
1531 VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1532
1533 exit;
1534 end;
1535
1536 if not Automatiskvalg1.Checked then
1537 begin
1538 if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1539 begin
1540
1541 VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
1542
1543 exit;
1544 end;
1545 end;
1546
1547
1548
1549 if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1550 begin
1551 chkScanTjekkode.Checked := false;
1552 for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1553 begin
1554 if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1555 begin
1556 chkScanTjekkode.Checked := true;
1557 Scanogstjekkoden1.Checked := true;
1558 end;
1559 end;
1560 end;
1561
1562 if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then
1563 begin
1564 // Når vi ikke kræver tjekkode er alt ok her
1565 BoghandlerStregkode := Stregkode;
1566 BoghandlerTjekkode := '';
1567 PakkeshopText1.Caption := 'Stregkode';
1568 btnNulstil.Visible := false;
1569 Stregkode := '';
1570 InitScreen();
1571 end
1572 else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then
1573 begin
1574 // Når vi ikke kræver tjekkode er alt ok her
1575 PakkeshopStregkode := Stregkode;
1576 PakkeshopTjekkode := '-1';
1577 BoghandlerStregkode := Stregkode;
1578 BoghandlerTjekkode := '-1';
1579 PakkeshopText1.Caption := 'Stregkode';
1580 btnNulstil.Visible := false;
1581 Stregkode := '';
1582 InitScreen();
1583 end
1584 else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then
1585 if PakkeshopText1.Caption = 'Stregkode' then
1586 begin
1587 if length(Stregkode) > 5 then
1588 begin
1589 PakkeshopStregkode := Stregkode;
1590 BoghandlerStregkode := Stregkode;
1591 PakkeshopText1.Caption := 'Tjekkode';
1592
1593 PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1594
1595 end
1596 else
1597 begin
1598 VisAlarmSkaerm( 'Du skal scanne en stregkode' );
1599 end;
1600 Stregkode := '';
1601 InitScreen();
1602 end
1603 else
1604 begin
1605 if length(Stregkode) = 5 then
1606 begin
1607 PakkeshopTjekkode := Stregkode;
1608 BoghandlerTjekkode := Stregkode;
1609 PakkeshopText1.Caption := 'Stregkode';
1610 if (PakkeshopLevering1.Checked) then
1611 MainForm.Color := HexToTColor(FarvePakkeshoplevering);
1612 if (Pakkernormal1.Checked) then
1613 MainForm.Color := HexToTColor(FarveNormal);
1614 btnNulstil.Visible := false;
1615 end
1616 else
1617 begin
1618 if (PakkeshopLevering1.Checked) then
1619 VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1620 if (Pakkernormal1.Checked) then
1621 VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1622
1623 StregKode := '';
1624 StregkodeST.Caption := StregKode;
1625
1626 exit;
1627 end;
1628 Stregkode := '';
1629 InitScreen();
1630 end;
1631
1632 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
1633 begin
1634 if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1635 StregKode := PakkeshopStregkode;
1636 if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1637 StregKode := BoghandlerStregkode;
1638 StregkodeST.Caption := StregKode;
1639 try
1640 InitScreen();
1641 HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, '');
1642 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
1643 // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1644 if Rutenummer = 'sql fejl' then
1645 begin // Her skal komme en alarm og rød skærm
1646 VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1647
1648 exit;
1649 end;
1650 if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
1651 begin
1652 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1653 pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
1654 if pakkeErScannet = 0 then
1655 begin
1656 pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
1657 end;
1658 if pakkeErScannet = 0 then
1659 begin
1660 pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
1661 end;
1662 pakkeForkertSted := pos('burde være hos', Kommentar);
1663 tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1664 if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1665 begin
1666 PlaySound(PWideChar(AlarmLyd));
1667 btnNulstil.Visible := true;
1668 MainForm.Color := clRed;
1669 end;
1670 end;
1671 if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1672 begin
1673 MainForm.Color := HexToTColor(Farve);
1674 if Storepakker1.Checked then
1675 begin
1676 PlaySound(PWideChar(ScannetOkStorLyd));
1677 end
1678 else
1679 begin
1680 PlaySound(PWideChar(ScannetOkLyd));
1681 end;
1682 btnNulstil.Visible := false;
1683 end
1684 else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1685 begin
1686 MainForm.Color := HexToTColor(Farve);
1687 if Storepakker1.Checked then
1688 begin
1689 PlaySound(PWideChar(ScannetOkStorLyd));
1690 end
1691 else
1692 begin
1693 PlaySound(PWideChar(ScannetOkLyd));
1694 end;
1695 btnNulstil.Visible := false;
1696 end
1697 else if Copy(Kommentar,1,8) = 'OPRETTET' then
1698 begin
1699 VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
1700 end
1701 else if Kommentar = StregKode then // budlevering til 'Ukendt tur'
1702 begin
1703 end
1704 else
1705 begin
1706 VisAlarmSkaerm('');
1707 end;
1708 if not btnNulstil.Visible then
1709 begin
1710
1711 If (Budlevering1.Checked) then
1712 begin
1713 if Storepakker1.Checked then
1714 begin
1715 PlaySound(PWideChar(ScannetOkStorLyd));
1716 end
1717 else
1718 begin
1719 PlaySound(PWideChar(ScannetOkLyd));
1720 end;
1721 InitLillePakke();
1722 end;
1723 end;
1724
1725 SletStregkodelinieFraListboks2(StregKode);
1726
1727 PakkeshopStregkode := '';
1728 PakkeshopTjekkode := '';
1729 BoghandlerStregkode := '';
1730 BoghandlerTjekkode := '';
1731 finally
1732 Stregkode := '';
1733 end
1734 end
1735 end
1736 else
1737 begin
1738 if (Key <> #22) then
1739 begin
1740 Stregkode := Stregkode + Key;
1741 end;
1742 StregkodeST.Caption := StregKode;
1743 end;
1744
1745 if Key = #8 then // backspace key
1746 begin
1747 StregKode := LeftStr(StregKode,Length(StregKode)-2);
1748 end;
1749
1750 if Key = #27 then // esc key
1751 begin
1752 Stregkode := '';
1753 end;
1754
1755 Key := #0;
1756
1757 end; //End of OnKeyPress
1758
1759 procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1760 const
1761 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
1762 var
1763 WebSvar : String;
1764 URLStr : String;
1765 begin
1766 if UrlSendPrograminfo <> '' then
1767 begin
1768 URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1769 try
1770 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1771 WebSvar := IdHTTP1.Get(URLStr);
1772 //IdHTTP1.Disconnect();
1773 except on e:exception do
1774 begin
1775 // ShowMessage(e.Message);
1776 // raise exception.CreateFmt('Fejl i forbindelse til server: %s',[e.Message]);
1777 logTekst := 'Der er opstået en fejl i kommunikationen med serveren.' + crlf + crlf + 'Programmet afsluttes... ' + crlf + crlf + 'Program rutine: SendTilServeren' + crlf + 'Fejl: ' + e.Message;
1778 ShowMessage(logTekst);
1779 SkrivScanningLogFil(logTekst);
1780 // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1781 UrlSendPrograminfo := '';
1782 Application.Terminate;
1783 end;
1784 end;
1785 if (WebSvar <> '') and (pos('Error', WebSvar) > 0) then
1786 begin
1787 ShowMessage(WebSvar);
1788 end;
1789 end;
1790 end;
1791
1792 procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1793 var
1794 i : Integer;
1795 wrkAntal : String;
1796 wrkAntalIdag, wrkAntalSenere : Integer;
1797
1798
1799 begin
1800 if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then
1801 begin
1802 for i := ListBox2.items.count-1 downto 0 do
1803 if pos(StregKode,ListBox2.items[i]) <> 0 then
1804 begin
1805
1806 // Ajourføring af tæller for manglende pakker (scanninger)
1807 wrkAntal := StaticTextManglendePakker.Caption;
1808 if (pos('/', wrkAntal) > 0) then // både pakker idag og senere
1809 begin
1810 wrkAntal := wrkAntal + '/'; // tilføjer '/' sidst i feltet af hensyn til split funktionen
1811 wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));
1812 // ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1813 // ShowMessage(SPLIT('data/another/','/',3));
1814 // ShowMessage(SPLIT('data/another','/',3));
1815 wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));
1816 end
1817 else // kun idag
1818 begin
1819 wrkAntalIdag := StrToInt(wrkAntal);
1820 end;
1821 if pos(StregKode + ' (',ListBox2.items[i]) <> 0 then // pakke til senere levering
1822 begin
1823 //ShowMessage('Senere ' + IntToStr(wrkAntalIdag) + ' ' + IntToStr(wrkAntalSenere));
1824 wrkAntalSenere := wrkAntalSenere - 1;
1825 // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1826 end
1827 else
1828 begin
1829 // ShowMessage('Idag');
1830 wrkAntalIdag := wrkAntalIdag - 1;
1831 // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1832 end;
1833 if (wrkAntalSenere > 0) then
1834 begin
1835 StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1836 end
1837 else
1838 begin
1839 StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1840 end;
1841
1842 if (Scanningtype = '1') then
1843 begin
1844 PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1845 if (wrkAntalIdag + wrkAntalSenere > 0) then
1846 begin
1847 PanelManglendePakker1.Visible := true;
1848 end
1849 else
1850 begin
1851 PanelManglendePakker1.Visible := false;
1852 end;
1853 end;
1854
1855 if (Scanningtype = '2') then
1856 begin
1857 PanelManglendePakker2.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1858 if (wrkAntalIdag + wrkAntalSenere > 0) then
1859 begin
1860 PanelManglendePakker2.Visible := true;
1861 end
1862 else
1863 begin
1864 PanelManglendePakker2.Visible := false;
1865 end;
1866 end;
1867
1868 if (Scanningtype = '3') then
1869 begin
1870 PanelManglendePakker3.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1871 if (wrkAntalIdag + wrkAntalSenere > 0) then
1872 begin
1873 PanelManglendePakker3.Visible := true;
1874 end
1875 else
1876 begin
1877 PanelManglendePakker3.Visible := false;
1878 end;
1879 end;
1880
1881 if (Scanningtype = '4') then
1882 begin
1883 PanelManglendePakker4.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1884 if (wrkAntalIdag + wrkAntalSenere > 0) then
1885 begin
1886 PanelManglendePakker4.Visible := true;
1887 end
1888 else
1889 begin
1890 PanelManglendePakker4.Visible := false;
1891 end;
1892 end;
1893
1894 if (Scanningtype = '5') then
1895 begin
1896 PanelManglendePakker5.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1897 if (wrkAntalIdag + wrkAntalSenere > 0) then
1898 begin
1899 PanelManglendePakker5.Visible := true;
1900 end
1901 else
1902 begin
1903 PanelManglendePakker5.Visible := false;
1904 end;
1905 end;
1906
1907 if (Scanningtype = '6') then
1908 begin
1909 PanelManglendePakker6.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1910 if (wrkAntalIdag + wrkAntalSenere > 0) then
1911 begin
1912 PanelManglendePakker6.Visible := true;
1913 end
1914 else
1915 begin
1916 PanelManglendePakker6.Visible := false;
1917 end;
1918 end;
1919 // 20150310: slut
1920 ListBox2.items.delete(i);
1921 end;
1922 end;
1923 end;
1924
1925 procedure TMainForm.StartScreen();
1926 begin
1927 if Org_RuteNummerST = '' then
1928 Org_RuteNummerST := RuteNummerST.Caption;
1929 if Org_BoghandlerNavnST = '' then
1930 Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
1931 if Org_KommentarST = '' then
1932 Org_KommentarST := KommentarST.Caption;
1933 RuteNummerST.Caption := Org_RuteNummerST;
1934 BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
1935 KommentarST.Caption := Org_KommentarST;
1936 end;
1937
1938 procedure TMainForm.InitScreen();
1939 begin
1940 RuteNummerST.Caption := '';
1941 KommentarST.Caption := '';
1942 BoghandlerNavnST.Caption := '';
1943 end;
1944
1945 procedure TMainForm.InitBladhus();
1946
1947 begin
1948 Altidprintepakkelabel1.Enabled := false;
1949 Pakkernormal1.Visible := false;
1950 ReturpakkerfraDAO1.Visible := false;
1951 Returpakkerfraboghandler1.Visible := false;
1952 Sprgefterboghandlernummer1.Enabled := false;
1953 ListBox1.Visible := true;
1954 // TestFunktionen := '1';
1955 // 20150317: start
1956 (*
1957 if TestFunktionen = '1' then
1958 begin
1959 Testforbindelsen1.Visible := true;
1960 Testprinter1.Visible := true;
1961 Testlyd1.Visible := true;
1962 Testlyd2.Visible := true;
1963 end
1964 else if TestFunktionen = '2' then
1965 begin
1966 Testforbindelsen1.Enabled := false;
1967 Testprinter1.Enabled := false;
1968 Testlyd1.Enabled := false;
1969 Testlyd2.Enabled := false;
1970 end
1971 else
1972 begin
1973 Testforbindelsen1.Visible := false;
1974 Testprinter1.Visible := false;
1975 Testlyd1.Visible := false;
1976 Testlyd2.Visible := false;
1977 end;
1978 Testprinter1.Visible := false;
1979 AlarmLyd := 'Sounds\Alarm.wav';
1980 if not FileExists(AlarmLyd) then
1981 begin
1982 AlarmLyd := '';
1983 end;
1984 ScannetOkLyd := 'Sounds\Ok.wav';
1985 if not FileExists(ScannetOkLyd) then
1986 begin
1987 ScannetOkLyd := '';
1988 end;
1989 ScannetOkStorLyd := 'Sounds\Ok_stor.wav';
1990 if not FileExists(ScannetOkStorLyd) then
1991 begin
1992 ScannetOkStorLyd := '';
1993 end;
1994 *)
1995 // 20150317: slut
1996 if Budlevering1.Checked then
1997 begin
1998 IndlesScanningLogFil();
1999 end;
2000
2001 //
2002 // Bladhus ***
2003 //
2004 case BladhusSted of
2005 01 :
2006 begin; // NS
2007 Testprinter1.Visible := true;
2008 DownloadButton01.Enabled := true;
2009 OpdaterListenButton01.Enabled := true;
2010 IdFTP1.Passive := true;
2011 IdFTP1.PassiveUseControlHost := true;
2012 BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
2013 BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2014 DownloadBladhusKontrolfil();
2015 IndlesManglendeScanninger();
2016 end;
2017 02 :
2018 begin; // BK
2019 Testprinter1.Visible := true;
2020 Smpakker1.Enabled := true;
2021 Storepakker1.Enabled := true;
2022 radioStorPakke.Enabled := true;
2023 radioLillePakke.Enabled := true;
2024 DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2025 OpdaterListenButton01.Enabled := true;
2026 IdFTP1.Passive := true;
2027 IdFTP1.PassiveUseControlHost := true;
2028 IndlesManglendeScanninger();
2029 end;
2030 03 :
2031 begin; // FD
2032 Testprinter1.Visible := true;
2033 if (getProddag() = 'lørdag') then
2034 begin
2035 DownloadButton03.Visible := false;
2036 end
2037 else
2038 begin
2039 DownloadButton03.Visible := false;
2040 end;
2041 DownloadButton01.Enabled := true;
2042 OpdaterListenButton01.Enabled := true;
2043 IdFTP1.Passive := true;
2044 IdFTP1.PassiveUseControlHost := true;
2045 BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
2046 BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
2047 if (getProddag() = 'lørdag') then
2048 begin
2049 //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
2050 end;
2051 BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
2052 BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2053 DownloadBladhusKontrolfil();
2054 IndlesManglendeScanninger();
2055 end;
2056 04 : begin; // DBK
2057 Testprinter1.Visible := true;
2058 Smpakker1.Enabled := true;
2059 Storepakker1.Enabled := true;
2060 radioStorPakke.Enabled := true;
2061 radioLillePakke.Enabled := true;
2062 DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2063 OpdaterListenButton01.Enabled := true;
2064 IdFTP1.Passive := true;
2065 IdFTP1.PassiveUseControlHost := true;
2066 end;
2067 else
2068 //ShowMessage('Ukendt Bladhus sted ???') ;
2069 end;
2070
2071 end;
2072
2073 procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
2074 var
2075 WebSvar : String;
2076 URLStr : String;
2077 pakkestorrelse : String;
2078 PrintNyLabelInteger : Integer;
2079
2080 PakkeshopLabel: TPakkeshopLabel;
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