source: trunk/info/info/alkisn/alkisfkt.php @ 398

Revision 398, 23.0 KB checked in by frank.jaeger, 3 years ago (diff)

Feinkorrekturen an der Buchauskunft, Title von Links, "jüngste" Adresse zur Person.

Line 
1<?php
2/*      Modul: alkisfkt.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        Functions
6
7        Version:
8        2016-02-24 Version fuer norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus.
9        2016-03-03 Hinweis auf Datenfehler wenn "ax_person" fehlt in function "eigentuemer"
10        2016-03-14 Kleine Korrekturen
11        2016-11-29 Gemeinsam genutzte Datenbanken ermöglichen (Filter Gemeinde)
12        2017-06-08 gestreifte Tabelle, Feinkorrekturen
13        2017-10-17 Deutsches Datumsformat fÃŒr Geburtsdatum der Person
14        2017-11-03 neue function werteliste()
15        2017-12-20 Default Anzeigewert "EigentÃŒmer" im Link fÃŒr leere EigentÃŒmerart, JÃŒngste Adresse zur Person verwenden.
16*/
17
18function footer($gmlid, $link, $append) {
19        // Einen Seitenfuss ausgeben.
20        // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor
21        // Den URL-Parameter "&showkey=j/n" umschalten lassen.
22        // $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, &ltyp=m/p/o bei Lage
23        global $gkz, $showkey, $hilfeurl, $auth;
24
25        // S c r e e n - Foot
26        echo "\n<div class='confbereich noprint'>"
27        ."\n\t<table class='outer'>\n\t<tr>";
28
29        // Spalte 1: Info Benutzerkennung
30        if ($auth == "mapbender") {
31                $customer=$_SESSION["mb_user_name"];
32                echo "\n\t\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>";
33        } else {
34                echo "\n\t\t<td>&nbsp;</td>";
35        }
36
37        // Spalte 2: Umschalter
38        echo "\n\t\t<td title='Konfiguration'>";
39                $mylink ="\n\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append;
40
41                if ($showkey) { // Umschalten SchlÃŒssel ein/aus
42                        echo $mylink."&amp;showkey=n' title='Verschl&uuml;sselungen ausblenden'>Schl&uuml;ssel aus</a>";
43                } else {
44                        echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>";
45                }
46        echo "\n\t\t</td>";
47
48        // Spalte 3
49        echo "\n\t\t<td title='Hilfe'>"
50                ."\n\t\t\t<p class='nwlink'>\n\t\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t\t</p>\n\t\t</td>"
51                ."\n\t</tr>\n\t</table>"
52        ."\n</div>\n";
53
54        // P r i n t - Foot
55        if ($auth == "mapbender") {
56        //      $customer=$_SESSION["mb_user_name"];
57                echo "\n<p class='onlyprint'><i>Mapbender-Benutzer:&nbsp;".$customer."</i></p>";
58        }
59
60        return 0;
61}
62
63function ber_bs_hinw($gmls, $gmlf) {
64        // Berechtigte Buchungs-Stellen - Hinweis.
65        // Unter dem Grundbuch-Link den Hinweis auf "berechtigte Buchungssstellen" anzeigen und einen Umschalter.
66        global $gkz, $debug, $showkey, $berbu, $eig;
67
68        // Buchungstelle dienend <(Recht)an< Buchungstelle herrschend
69        $sql ="SELECT count(sh.gml_id) AS anz, sh.buchungsart, a.v "
70        ."FROM ax_buchungsstelle sd JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) "
71        ."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) "
72        ."WHERE sd.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' "
73        ."GROUP BY sh.buchungsart, a.v;";
74
75        $v = array($gmls); // GML dienende Buchungs-Stelle
76        $resan = pg_prepare("", $sql);
77        $resan = pg_execute("", $v);
78        if (!$resan) {
79                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>";
80                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
81        }
82        $zeile=0; // Vesrchiedene Arten
83        $cnt=0; // Summe der Buchugen
84        while($rowan = pg_fetch_array($resan)) {
85                $anz=$rowan["anz"];
86
87                // Einleitung
88                if ($zeile == 0) { // vor. 1. Zeile
89                        // Diese Hinweise sollen mit gedruckt werden. Also KEIN "noprint"!
90                        echo "\n\t\t<br>\n\t\t<p class='nwlink' title='Andere Grundst&uuml;cke mit Rechten an diesem.'>\n\t\t\tBerechtigte Buchungen ";
91                        if ($berbu=="j") { // wechselndes Symbol
92                                echo "<img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''>";
93                        } else {
94                                echo "<img src='ico/Grundbuch.png' width='16' height='16' alt=''>";
95                        }
96                        echo "\n\t\t\t<b>";
97                }
98
99                // Eine Zeile je Buchungs-Typ
100                echo "<br>".$anz." ".htmlentities($rowan["v"], ENT_QUOTES, "UTF-8");
101                if ($showkey) {echo " <span class='key'>(".$rowan["buchungsart"].")</span>";}
102                $zeile++;
103                $cnt = $cnt + $anz;
104        } // Ende Result
105        pg_free_result($resan);
106
107        // Ergebnis
108        if ($zeile == 0) { // kein Schleifen-Durchlauf
109                echo "\n\t<p class='nwlink' title='Kein anderes Grundst&uuml;ck hat ein Recht an diesem.'>Keine berechtigte Buchung</p>";
110        } else { // Schleife wurde durchlaufen,
111                echo "</b>\n\t\t</p>";
112
113                // Umschalter nicht drucken
114                echo "\n\t\t<p class='nwlink noprint'>"
115                ."\n\t\t\t<a href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;gmlid=".$gmlf."&eig=".$eig; // GML FlurstÃŒck
116                if ($showkey) {echo "&amp;showkey=j";}
117                // Der FS-Nachweis ruft sich selbst mit geaendertem Parameter auf.
118                if ($berbu=="j") {
119                        echo "&amp;berbu=n' title='ohne berechtigte Buchungen'>nicht Anzeigen"; // Position: Top
120                } else {
121                        echo "&amp;berbu=j#berbu' title='mit berechtigten Buchungen'>Anzeigen"; // Positionierung auf Marke #berbu
122                }
123                echo "</a>\n\t\t</p>";
124        }
125        return $cnt; // Funktionswert = Anzahl der berechtigten Buchungen
126}
127
128function ber_bs_anz($gmls, $eig) {
129        // Berechtigte Buchungsstellen (+ BlÀtter, EigentÃŒmer) anzeigen innerhalb eines FS-Nachw.
130        // Im FS-Nachweis werden auch die berechtigten GrundbÃŒcher mit ihren EigentÃŒmern angezeigt.
131        // Also z.B. zu einem "fiktiven Blatt" auch die GrundbuÃŒcher mit dem "Wohnungs-/Teileigentum"
132        global $gkz, $debug, $showkey, $idanzeige;
133
134        // Herrschende (berechtigte) Buchungsstellen ausgeben - Beginn
135        // sd=Buchungstelle herrschend >(Recht)an> sd=Buchungstelle dienend >istBestandteilVon> BLATT -> Bezirk
136        $sql="SELECT sd.gml_id AS s_gml, "  // Buchungs-Stelle dienend
137        ."sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend
138        ."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.v AS bart, w.v AS blattartv "
139        ."FROM ax_buchungsstelle sd "
140        ."JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) "
141        ."JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon "
142        ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk "
143        ."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' " // entschlÃŒsseln Buchungsart
144        ."LEFT JOIN alkis_wertearten w ON b.blattart=w.k AND w.element='ax_buchungsblatt' and w.bezeichnung='blattart' " // entschlÃŒsseln Blatt-Art
145        ."WHERE sd.gml_id= $1 AND sd.endet IS NULL AND sh.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL "
146        ."ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
147
148        $v = array($gmls); // id dienende Buchungsstelle
149        $resber = pg_prepare("", $sql);
150        $resber = pg_execute("", $v);
151        if (!$resber) {
152                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>";
153                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
154        }
155
156        $an=0;
157        while($rowan = pg_fetch_array($resber)) {
158                $beznam=$rowan["bezeichnung"];
159                $bart=$rowan["bart"]; // Buchungsart
160                $blattkeyber=$rowan["blattart"];  // Schluessel von Blatt-Art des berechtigten GB
161                $blattartber=$rowan["blattartv"]; // Wert von Blatt-Art des berechtigten GB
162                $nrpl=$rowan["nrpl"]; // Nummer im Aufteilungsplan
163                $sond=$rowan["sond"]; // Beschreibung des Sondereigentums
164
165                echo "\n<table class='outer'>" // \n<hr>
166                ."\n<tr>" // 1 row only
167                        ."\n<td>"; // outer linke Spalte - Daten
168                                // Rahmen mit Kennzeichen GB
169                                if ($blattkeyber == 1000) {
170                                        echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
171                                } else {
172                                        echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
173                                }
174                                echo "\n\t<tr>"
175                                        ."\n\t\t<td class='head'>Bezirk</td>"
176                                        ."\n\t\t<td class='head'>".$blattartber."</td>"
177                                        ."\n\t\t<td class='head'>Lfd-Nr,</td>"
178                                        ."\n\t\t<td class='head'>Buchungsart</td>"
179                                ."\n\t</tr>";
180                                echo "\n\t<tr>"
181                                        ."\n\t\t<td title='Grundbuchbezirk'>";
182                                        if ($showkey) {echo "<span class='key'>".$rowan["bezirk"]."</span><br>";}
183                                        echo $beznam."</td>"
184                                        ."\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowan["blatt"]."</span></td>"
185                                        ."\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rowan["lfd"]."</td>"
186                                        ."\n\t\t<td title='Buchungsart'>";
187                                                if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span><br>";}
188                                                echo $rowan["bart"]
189                                        ."</td>"
190                                ."\n\t</tr>"
191                                ."\n\t</table>";
192                                if ($rowan["zaehler"] <> "") {
193                                        echo "\n\t<p class='ant'>".$rowan["zaehler"]."/".$rowan["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
194                                }
195                        echo "\n</td>";
196
197                        echo "\n<td>"; // outer rechte Spalte
198                                if ($idanzeige) {
199                                        linkgml($gkz, $rowan["s_gml"], "Buchungsstelle", "ax_buchungsstelle");
200                                        echo "<br>";
201                                        linkgml($gkz, $rowan["g_gml"], "Buchungsblatt", "");
202                                }
203                                echo "\n\t<br>"
204                                ."\n\t<p class='nwlink noprint'>";
205                                        if ($showkey) {echo "<span class='key'>".$blattkeyber."</span> ";}
206                                        echo "\n\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$rowan["g_gml"];
207                                                if ($idanzeige) {echo "&amp;id=j";}
208                                                if ($showkey)   {echo "&amp;showkey=j";}
209                                                echo "' title='Grundbuchnachweis mit Eigent&uuml;merangabe'>".$blattartber
210                                                ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
211                                        ."</a>";
212                                echo "\n\t</p>"
213                        ."\n\t</td>"
214                ."\n</tr>"
215                ."\n</table>";
216
217                if ($blattkeyber != 1000) {
218                        echo "\n<p>Blattart: ".$blattartber." (".$blattkeyber.").<br>";
219                }
220
221                if ($nrpl != "") {
222                        echo "\n<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$nrpl."</span> im Aufteilungsplan.</p>";
223                }
224
225                if ($sond != "") {
226                        echo "\n<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$sond."</p>";
227                }
228
229                if ($eig == "j") {
230                        $n = eigentuemer($rowan["g_gml"], true, ""); // mit Adresse
231                }
232                $an++; 
233        }
234        pg_free_result($resber);
235        return;
236}
237
238
239function kurz_namnr($lang) {
240        // Namensnummer kÃŒrzen. Nicht benötigte Stufen der Dezimalklassifikation abschneiden
241        $kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende)
242        $kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang)
243        $kurz=ltrim($kurz, "0"); // fuehrende Nullen am Anfang
244        $kurz=str_replace(".0",".",$kurz); // fuehrende Null jeder Stufe
245        $kurz=rtrim($kurz); // Leerzeichen hinten
246        // echo "/n<p class='dbg'> lang='".$lang."'</p>/n<p class='dbg'> kurz='".$kurz."'</p>";
247        return $kurz;
248}
249
250function bnw_fsdaten($con, $lfdnr, $gml_bs, $ba, $anteil, $bvnraus, $bartkey, $bartstory) {
251/*      Bestandsnachweis - Flurstuecksdaten
252        Die Tabellenzeilen mit den Flurstuecksdaten zu einer Buchungsstelle im Bestandsnachweis ausgeben.
253        Die Funktion wird je einmal aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall).
254        Weiterere Aufrufe ggf. bei Erbbaurecht fÃŒr die mit "an" verknuepften Buchungsstellen.
255        Table-Tag und Tabellenkopf werden im aufrufenden Programm ausgegeben. */
256        global $debug, $gkz, $showkey, $filtkreis, $filtgem, $trclass; // $zpaar
257
258        // F L U R S T U E C K
259        $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche
260        FROM ax_flurstueck f JOIN ax_buchungsstelle s ON f.istgebucht=s.gml_id
261        LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
262        WHERE f.endet IS NULL AND s.endet IS NULL AND g.endet IS NULL AND s.gml_id= $1 ";
263        if ($filtgem == '' ) { // ungefiltert
264                $v=array($gml_bs);
265        } else {
266                $sql.="AND f.kreis = $2 AND f.gemeinde = $3 "; // ZustÀndiges Gebiet
267                $v=array($gml_bs, $filtkreis, $filtgem);
268        }
269        $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
270        $resf = pg_prepare("", $sql);
271        $resf = pg_execute("", $v);
272        if (!$resf) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck</p>";}
273
274        if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben
275                $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
276        } else {
277                $bvnr="";
278        }
279        $altbvnr="";
280        $j=0;
281        while($rowf = pg_fetch_array($resf)) {
282                $flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
283                $fskenn=$rowf["zaehler"];
284                if ($rowf["nenner"] != "") { // Bruch
285                        $fskenn.="/".$rowf["nenner"];
286                }
287                $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
288
289                echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck
290                        // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS
291                        if($bvnr == $altbvnr) { // gleiches Grundstueck, leer lassen
292                                echo "\n\t<td>&nbsp;</td>"
293                                ."\n\t<td>&nbsp;</td>"
294                                ."\n\t<td>&nbsp;</td>";
295                        } else { // Sprungmarke, BVNR
296                                echo "\n\t<td id='bvnr".$bvnr."'>"; // Sprungmarke
297                                //      echo "\n\t\t<a id='bvnr".$bvnr."'></a>";
298                                        echo "<span class='wichtig'>".$bvnr."</span>"
299                                ."\n\t</td>";
300
301                                echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart
302                                        if ($showkey) {echo "<span class='key'>".$bartkey."</span>&nbsp;";} // Schluessel
303                                        echo $ba; // entschluesselt
304                                echo "</td>"
305                                ."\n\t<td>&nbsp;</td>"; // Anteil
306                                $altbvnr=$bvnr;
307                        }
308
309                        // Sp. 4-7 aus Flurstueck
310                        echo "\n\t<td>";
311                        if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";}
312                        echo $rowf["bezeichnung"]."</td>"
313                        ."\n\t<td>".$flur."</td>"
314                        ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span>"
315                        ."</td>"
316                        ."\n\t<td class='flag'>".$flae."</td>"; // "width" hier (flaG) erweiterbar, weil in andere Zeile die Buchungsart steht
317
318                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"
319                                ."\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
320                                        if ($showkey)   {echo "&amp;showkey=j";}
321                                        echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck "
322                                        ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
323                                ."</a>"
324                        ."\n\t\t</p>"
325                ."\n\t</td>"
326                ."\n</tr>";
327
328                $j++;
329        } // Ende Loop Flurstueck
330        pg_free_result($resf);
331        return $j;
332}
333
334function eigentuemer($gmlid, $mitadresse, $lnkclass) {
335        // Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben
336        // Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
337        // Parameter:
338        //      $gmlid = ID GB-Blattes
339        //      $mitadresse = Option (true/false) ob die Adresszeile ausgegeben werden soll
340        // Return = Anzahl Namensnummern
341
342        // Schleife 1: N a m e n s n u m m e r
343        // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt
344        global $debug, $gkz, $showkey;
345
346        // Link ÃŒber Java-Class? (Ja in alkisinlayausk.php, sonst normal)
347        if ($lnkclass == "") {
348                $lnkvor = "";
349                $lnknach = "";
350        } else {
351                $lnkvor  = "javascript:".$lnkclass."(\"";
352                $lnknach = "\")";
353        } // Beispiel-Link href='javascript:imFenster(\"alkislage.php?gkz= ... ."\")'>xxx ";
354
355        $sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass, n.benennt, wn.v AS adrv, we.v AS eiartv "
356        ."FROM ax_namensnummer n "
357        ."LEFT JOIN alkis_wertearten wn ON cast(n.artderrechtsgemeinschaft AS character varying)=wn.k AND wn.element='ax_namensnummer' AND wn.bezeichnung='artderrechtsgemeinschaft' "
358        ."LEFT JOIN alkis_wertearten we ON cast(n.eigentuemerart AS character varying)=we.k AND we.element='ax_namensnummer' AND we.bezeichnung='eigentuemerart' "
359        ."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;";
360
361        $v = array($gmlid); // 16 Stellen bei Relationen
362        $resn = pg_prepare("", $sqln);
363        $resn = pg_execute("", $v);
364
365        if (!$resn) {
366                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
367                // kein Fehler bei Blattarten > 1000
368                //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml= '".$gmlid."'</p>";}
369        }
370
371        $n=0; // Z.NamNum.
372        while($rown = pg_fetch_array($resn)) {
373                if($n == 0) { // Die Überschrift nur, wenn auch ein Inhalt folgt
374                        echo "\n\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>"
375                        ."\n<table class='eig'>";
376                }
377                $gmlnn=$rown["gml_id"];
378                $namnum=kurz_namnr($rown["lfd"]);
379                $rechtsg=$rown["adr"];
380                echo "\n<tr>"
381                        ."\n\t<td class='nanu' title='Namens-Nummer'>\n\t\t<p>" // Sp. 1
382                                .$namnum."&nbsp;" // VOR die Tabelle: "EigentÃŒmer"
383                        ."</p>\n\t</td>"
384                        . "\n\t<td>"; // Sp. 2
385                        if ($rechtsg != "" ) {
386                                if ($rechtsg == 9999) { // sonstiges
387                                        echo "\n\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."</p>";
388                                } else {
389                                        echo "\n\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."</p>";
390                                }
391                        }
392                        //if ($rown["anlass"] > 0 ) {echo "<p>Anlass=".$rown["anlass"]."</p>";} // TEST:
393
394                        // Schleife Ebene 2: andere Namensnummern
395                        // Beziehung   ax_namensnummer >bestehtAusRechtsverhaeltnissenZu>  ax_namensnummer
396
397                        // Die Relation 'Namensnummer' besteht aus RechtsverhÀltnissen zu 'Namensnummer' sagt aus,
398                        // dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehören können.
399                        // Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer,
400                        // die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt.
401
402                // Schleife 2: P e r s o n
403                // Beziehung: ax_person  <benennt<  ax_namensnummer
404                $sqlp="SELECT gml_id, nachnameoderfirma, vorname, geburtsname, to_char(cast(geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, namensbestandteil, akademischergrad "
405                ."FROM ax_person WHERE gml_id= $1 AND endet IS NULL;";
406                $gmlpers=$rown["benennt"];
407                $v = array($gmlpers); // gml_id von ax_person
408                $resp = pg_prepare("", $sqlp);
409                $resp = pg_execute("", $v);
410                if (!$resp) {
411                        echo "\n\t<p class='err'>Fehler bei Person</p>";
412                        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlp."<br>$1=gml= '".$gmlpers."'</p>";}
413                }
414
415                $i=0; // cnt Person
416                while($rowp = pg_fetch_array($resp)) { // Schleife weglassen? nn >benennt> Person ist KEIN Array!
417                        $diePerson=""; //++ Anrede?
418                        if ($rowp["akademischergrad"] <> "") {$diePerson=$rowp["akademischergrad"]." ";}
419                        $diePerson.=$rowp["nachnameoderfirma"];
420                        if ($rowp["vorname"] <> "") {$diePerson.=", ".$rowp["vorname"];}
421                        if ($rowp["namensbestandteil"] <> "") {$diePerson.=". ".$rowp["namensbestandteil"];}
422                        if ($rowp["geburtsdatum"] <> "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];}
423                        if ($rowp["geburtsname"] <> "") {$diePerson.=", geb. ".$rowp["geburtsname"];}
424                        $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute
425
426                        if ($i > 0) { // Spalte 1 enthÀlt die Namensnummer, nur in Zeile 0
427                                echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>";
428                        }
429                        // Spalte 2 = Angaben
430                        $eiartkey=$rown["eigentuemerart"]; // Key
431                        $eiart=$rown["eiartv"]; // Value
432                        echo "\n\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t</td>";
433
434                        // Spalte 3 = Link
435                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
436                                if ($showkey AND $eiartkey != '') { // oft leer
437                                        echo "<span class='key' title='Eigent&uuml;merart'>".$eiartkey."</span> ";
438                                }
439                                echo "\n\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$rowp[0];
440                                if ($showkey) {echo "&amp;showkey=j";}
441                                if ($eiartkey == "") {$eiart="Eigent&uuml;mer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt
442                                echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart
443                                ." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t</p>"
444                        ."\n\t</td>\n</tr>";
445
446                        if ($mitadresse) {
447                                // Schleife 3:  A d r e s s e  (OPTIONAL)
448                                $sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland "
449                                ."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL ORDER BY a.beginnt DESC LIMIT 2;";
450                                $gmlp=$rowp["gml_id"]; // Person
451                                $v = array($gmlp);
452                                $resa = pg_prepare("", $sqla);
453                                $resa = pg_execute("", $v);
454
455                                if (!$resa) {
456                                        echo "\n\t<p class='err'>Fehler bei Adressen</p>";
457                                        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlp."'</p>";}
458                                }
459                                $j=0;
460                                while($rowa = pg_fetch_array($resa)) {
461                                        $j++;
462                                        if ($j == 1) { // erste ("jÃŒngste") Adresse anzeigen
463                                                $gmla=$rowa["gml_id"];
464                                                $plz=$rowa["plz"]; // integer
465                                                if($plz == 0) {
466                                                        $plz="";
467                                                } else {
468                                                        $plz=str_pad($plz, 5, "0", STR_PAD_LEFT);
469                                                }
470                                                $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8");
471                                                $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8");
472                                                $hsnr=$rowa["hausnummer"];
473                                                $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8");
474
475                                                echo "\n<tr>\n\t<td>&nbsp;</td>"; //Sp. 1
476                                                echo "\n\t<td><p class='gadr'>"; //Sp. 2
477                                                if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";}
478                                                if ($plz.$ort != "") {echo $plz." ".$ort;}
479                                                if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;}
480                                                echo "</p></td>\n\t<td>"; // Sp. 3
481                                                echo "&nbsp;</td>\n</tr>";
482                                        } else { // manchmal doppelte Angaben
483                                                echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td><p class='dbg' title='Siehe Auskunft zur Person'>weitere Adresse</p></td>\n\t<td>&nbsp;</td>\n</tr>";
484                                        }
485                                }
486                                pg_free_result($resa);
487                        }
488                        // 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG"
489                        $i++; // cnt Person
490
491                        // Anteil als eigene Tab-Zeile:
492                        $zaehler=$rown["zaehler"];
493                        if ($zaehler != "") {
494                                $zaehler=str_replace(".", ",", $zaehler); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht
495                                $nenner=str_replace(".", ",", $rown["nenner"]);
496                                $comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundst&uuml;ck oder Recht).";
497                                echo "\n<tr>\n\t<td>&nbsp;</td>" // Sp. 1
498                                ."\n\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>"
499                                ."\n\t<td>&nbsp;</td>\n</tr>"; // Sp. 3
500                        }
501                } // End Loop Person
502                if ($i == 0) { // Keine Person. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler
503                        if ($rechtsg != 9999) {
504                                echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>";
505                        } else {
506                                if ($debug > 1) { // nur bei Entwicklung
507                                        echo "\n\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";
508                                }
509                        }
510                        echo "</td>\n\t<td>&nbsp;</td>\n</tr>";
511                }
512                $n++; // cnt NamNum
513        } // End Loop NamNum
514        if($n > 0) {
515                echo "\n</table>";
516        } else { // $n == 0, bei "Fiktives Blatt" KEIN Fehler
517                if ($debug > 1) {
518                        echo "\n<p class='dbg'>keine Namensnummern zum Blatt</p>";
519                        //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml(Blatt)= '".$gmlid."'</p>";}
520                }
521        }
522        pg_free_result($resn);
523        return $n;
524} // End function eigentuemer
525
526function werteliste ($element, $bezeichnung ,$sqlin) {
527        // Eine oder mehrere EntschlÃŒsselungen aus "alkis_wertearten" in eine Zeile ausgeben.
528        // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile mehrfach aufzulisten (JOIN)
529        // Anwendung: FS-Nachweis BodenschÀtzung "Klimastufe + WasserverhÀltnisse"
530        global $debug;
531        $sql="SELECT k, v FROM alkis_wertearten WHERE element = $1 AND bezeichnung = $2 AND k IN (".$sqlin.") ORDER BY k;";
532        $v = array($element, $bezeichnung);
533        $res = pg_prepare("", $sql);
534        $res = pg_execute("", $v);
535        if (!$res) {
536                echo "\n<p class='err'>Fehler bei Werteliste aus alkis_wertearten.</p>";
537                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = '".$sqlin."'</p>";}
538                return;
539        }
540        $i=0;
541        while($row = pg_fetch_array($res)) {
542                echo " ".$row["v"];
543                $i++;   
544        }
545        pg_free_result($res);
546        if ($i == 0 ) {echo "(kein Treffer)";}
547        return;
548}
549
550?>
Note: See TracBrowser for help on using the repository browser.