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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20