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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20