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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2800 - (hide annotations) (download)
Wed Jan 6 12:53:51 2016 UTC (8 years, 4 months ago) by torben
File size: 165586 byte(s)
Tilføj TK (BK/Trykkompagniet) som sted
Dokumnentation af "For stor til DAODIrekte"

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

  ViewVC Help
Powered by ViewVC 1.1.20