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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20