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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20