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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20