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

Revision 404, 26.3 KB checked in by frank.jaeger, 6 years ago (diff)

Nachkorrektur Web-Auskunft

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