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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20