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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20