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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20