Changeset 427 for trunk/info/info/alkisn/alkisbestnw.php
- Timestamp:
- 02/24/22 16:24:19 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/info/info/alkisn/alkisbestnw.php
r425 r427 1 1 <?php 2 /* Modul: alkisbestnw.php 3 4 ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 5 Bestandsnachweis fÃŒr ein Grundbuch aus ALKIS PostNAS 2 /* alkisbestnw.php 3 4 ALKIS-Auskunft 5 Author: Frank JÀger, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo) 6 7 Bestandsnachweis fÃŒr ein Grundbuch (-Blatt) aus ALKIS PostNAS 6 8 7 9 Version: … … 14 16 Tabellenstruktur verbessert und Title bei "Recht an". 15 17 2021-12-30 Bestandsnachweis recursiv ÃŒber alle Buchungs-Ebenen 18 2022-01-13 Functions aus alkisfkt.php in dies Modul verschoben, wenn nur hier verwendet. Neue Functions LnkStf(), DsKy() 16 19 */ 20 21 function bnw_bsdaten($gml_h, $ebene) { 22 /* Bestandsnachweis - Buchungsstellen-Daten 23 "dienende" Buchungsstellen suchen. Miteigentumsanteil, Erbbaurecht usw. 24 Return: gml_id der dienenden Buchungsstelle wenn gefunden? Sonst Leerstring */ 25 global $dbg, $bartkey, $bart, $bartstory, $anteil; 26 27 // dann "dienende" Buchungsstellen 28 // sh=herrschend sd=dienend 29 // ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes) 30 // ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an) 31 // - "zu" kommt in der Praxis (NRW) nicht vor, wird hier nicht berÃŒcksichtigt 32 33 if ($ebene > 5) {echo "\n<p class='err'>Ungewöhnlich tiefe Schachtelung ".$ebene." der Buchungs-Stellen.</p>";} 34 35 $sql ="SELECT sd.gml_id, sd.buchungsart, sd.zaehler, sd.nenner, sd.laufendenummer AS lfd, sd.beschreibungdesumfangsderbuchung AS udb, " 36 ."sd.nummerimaufteilungsplan AS nrap, sd.beschreibungdessondereigentums AS sond, " 37 ."wb.beschreibung AS bart, wb.dokumentation, " 38 ."b.gml_id as gbgml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, " 39 ."bb.beschreibung AS blattartv, z.bezeichnung AS beznam " 40 ."FROM ax_buchungsstelle sh " 41 ."JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " 42 ."JOIN ax_buchungsblatt b ON b.gml_id=sd.istbestandteilvon " 43 ."LEFT JOIN ax_buchungsart_buchungsstelle wb ON sd.buchungsart = wb.wert " 44 ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk ".UnqKatAmt("b","z") 45 ."LEFT JOIN ax_blattart_buchungsblatt bb ON b.blattart = bb.wert " 46 ."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL " 47 ."ORDER BY sd.laufendenummer;"; 48 $v=array($gml_h); // gml_id "herrschende" B-Stelle 49 $resan=pg_prepare("", $sql); 50 $resan=pg_execute("", $v); 51 if (!$resan) { 52 echo "\n<p class='err'>Fehler bei 'dienende Buchungsstelle'.</p>"; 53 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gml_bs."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 54 } 55 $zeianz=pg_num_rows($resan); // Zeilen-Anzahl = Returnwert 56 $und = false; // mehrfaches "Recht an" auf gleicher Ebene 57 while($row= pg_fetch_assoc($resan)) { 58 $gml_bsan=$row["gml_id"]; // id der dien. BS 59 $blatt=ltrim($row["blatt"], "0"); 60 61 // als Global-Var zur Sub-Function: 62 $bartkey=$row["buchungsart"]; 63 $bart=$row["bart"]; // Buchungsart, entschlÃŒsselt 64 $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); 65 if ($row["zaehler"] == "") {$anteil = "";} 66 else {$anteil = $row["zaehler"]."/".$row["nenner"];} 67 68 // Zeile ausgeben Buchungsstelle dienend 69 bnw_bszeile_d($row["bezirk"], $row["beznam"], $blatt, $row["blattart"], $row["blattartv"], $row["lfd"], $row["gbgml"], $gml_bsan, $ebene, $und); 70 $und = true; 71 if ($row["nrap"] != "") { // Nr im Auft.Plan 72 echo "\n<tr>\n\t<td colspan=3></td><td class='nrap' colspan=4>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td><td></td>\n</tr>"; 73 } 74 if ($row["sond"] != "") { // Sondereigentumsbeschreibung 75 echo "\n<tr>\n\t<td></td><td class='sond' colspan=6 title='Sondereigentums-Beschreibung'>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td><td></td>\n</tr>"; 76 } 77 78 // Rekursiver Aufruf der gleichen Function, weitere Ebene dienend? 79 $tiefer = bnw_bsdaten($gml_bsan, ($ebene + 1)); 80 If ($tiefer == 0) { // Wenn nicht, dann kann es FlurstÃŒcke dazu geben 81 $fscnt= bnw_fsdaten($gml_bsan, false); // FlurstÃŒcksdaten 82 } 83 } 84 pg_free_result($resan); 85 return $zeianz; 86 } 87 88 function bnw_fsdaten($gml_bs, $mit_buchung_link) { 89 /* Bestandsnachweis - FlurstÃŒcksdaten 90 Die Tabellenzeilen mit den FlurstÃŒcksdaten zu EINER Buchungsstelle im Bestandsnachweis ausgeben. 91 Die Funktion wird entweder aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall) 92 oder bei Erbbaurecht fÃŒr die mit "an" verknÃŒpften Buchungsstellen der untersten Ebene (dienende Buchung). 93 Der Tabellenkopf wird im aufrufenden Programm ausgegeben. 94 Return: Anzahl der ausgegebenen FlurstÃŒcke */ 95 global $dbg, $gkz, $showkey, $filtkreis, $filtgem, $trclass, $katAmtMix, $lfdnr, $altlfdnr, $bartkey, $bart, $bartstory, $anteil; 96 97 $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche " 98 ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 99 ."WHERE f.endet IS NULL AND g.endet IS NULL AND f.istgebucht = $1 "; 100 if ($filtgem === '') { // ungefiltert 101 $v=array($gml_bs); 102 } else { 103 $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // ZustÀndiges Gebiet 104 $v=array($gml_bs, $filtkreis, $filtgem); 105 } 106 $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 107 $resf = pg_prepare("", $sql); 108 $resf = pg_execute("", $v); 109 if (!$resf) {echo "\n<p class='err'>Fehler bei Flurstück</p>";} 110 $zeianz=pg_num_rows($resf); 111 while($rowf = pg_fetch_assoc($resf)) { 112 $fskenn=$rowf["zaehler"]; 113 if ($rowf["nenner"] != "") { // Bruch 114 $fskenn.="/".$rowf["nenner"]; 115 } 116 $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m²"; 117 118 echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck 119 120 // Sp. 1-3 der Tab. Daten aus Buchungsstelle, nicht aus FS 121 if($lfdnr === $altlfdnr) { // gleiches GrundstÃŒck, leer lassen 122 echo "\n\t<td> </td>" 123 ."\n\t<td> </td>" 124 ."\n\t<td> </td>"; 125 } else { // Sprungmarke, BVNR 126 $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 127 echo "\n\t<td id='bvnr".$bvnr."'><span class='wichtig'>".$bvnr."</span>\n\t</td>" 128 ."\n\t<td title ='".$bartstory."'>".DsKy($bartkey, 'Buchungsart-*').$bart."</td>" 129 ."\n\t<td> </td>"; 130 $altlfdnr=$lfdnr; 131 } 132 133 // Sp. 4-7 aus FlurstÃŒck 134 echo "\n\t<td>".DsKy($rowf["gemarkungsnummer"], 'Gemarkungsnummer').$rowf["bezeichnung"]."</td>" 135 ."\n\t<td>".$rowf["flurnummer"]."</td>\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>" 136 ."\n\t<td class='fla'>".$flae."</td>" 137 ."\n\t<td>\n\t\t<p class='nwlink noprint'>"; 138 139 // Buchung BVNR 140 If ($mit_buchung_link == true) { // nur bei GrundstÃŒck 141 echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&gmlid=".$gml_bs.LnkStf() 142 ."' title='Grundstücksnachweis'>Buchung <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a> "; 143 $mit_buchung_link = false; // nur in erster Zeile 144 } 145 // Flurstk. 146 echo "\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&gmlid=".$rowf["gml_id"]."&eig=n".LnkStf()."' title='Flurstücksnachweis'>Flurstück " 147 ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>" 148 ."\n\t\t</p>\n\t</td>\n</tr>"; 149 } 150 pg_free_result($resf); 151 return $zeianz; 152 } 153 154 function bnw_bszeile_h() { 155 /* Bestandsnachweis - Buchungs-Stellen-Zeile ausgeben - herrschend. 156 Die GB-Daten hierzu stehen bereits im Kopf und bleiben in der Tab. leer */ 157 global $dbg, $gkz, $trclass, $lfdnr, $bartkey, $bart, $bartstory, $anteil; 158 159 $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 160 echo "\n<tr class='".$trclass."'>" 161 ."\n\t<td id='bvnr".$bvnr."'><span class='wichtig'>".$bvnr."</span></td>" // Sprungmarke=BVNR auf dem GB-Blatt 162 ."\n\t<td class='dien' title='".$bartstory."'>".DsKy($bartkey, 'Buchungsart-*').$bart."</td>" 163 ."\n\t<td class='dien'>".$anteil."</td>" 164 ."\n\t<td colspan=5> </td>\n</tr>"; 165 } 166 167 function bnw_bszeile_d($bezkey, $beznam, $blatt, $blattartkey, $blattart, $lfdnran, $gbgml, $gml_bsan, $ebene, $und) { 168 /* Bestandsnachweis - Buchungsstellen-Zeile ausgeben - dienend 169 Eine Folge-Zeile fÃŒr eine dienende Buchung ausgeben. */ 170 global $gkz, $trclass, $bartkey, $bart, $bartstory, $anteil; 171 172 $bvnr=str_pad($lfdnran, 4, "0", STR_PAD_LEFT); 173 $filler=str_repeat(" ", $ebene - 2); // 3 und 4 EinrÃŒcken 174 if ($und){$filler.="und ";}; // Unterscheidung Hierarchie (Ebene wechselt) von Liste (gleiche Ebene) 175 echo "\n<tr class='".$trclass."'>" 176 ."\n\t<td title='Ebene ".$ebene."'>".$filler."an</td>" 177 ."\n\t<td class='dien' title='".$bartstory."'>".DsKy($bartkey, 'Buchungsart-*').$bart."</td>" 178 ."\n\t<td class='dien'>".$anteil."</td>"; 179 180 // Sp.4 GB-Bezirk 181 echo "\n\t<td class='dien' title='Grundbuch-Bezirk'>".DsKy($bezkey, 'Grundbuch-Bezirk-*').htmlentities($beznam, ENT_QUOTES, "UTF-8")."</td>" 182 ."\n\t<td class='dien' title='".$blattart."'>".$blatt."</td>" 183 ."\n\t<td class='dien' title='Bestandsverzeichnis-Nummer'>".$bvnr."</td>" 184 ."\n\t<td class='dien'></td>"; 185 186 echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 187 188 // Link Bestand Blatt 189 echo "\n\t\t\t".DsKy($blattartkey, 'Blatt-Art-*')."<a href='alkisbestnw.php?gkz=".$gkz."&gmlid=".$gbgml.LnkStf() 190 ."#bvnr".$lfdnran."' title='Zum Grundbuchnachweis des dienenden Blattes'>".$blattart 191 ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 192 193 if ($bartkey < 2000){ 194 // Link Buchung BVNR nur fÃŒr GrundstÃŒck usw. 195 echo "<br>\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&gmlid=".$gml_bsan.LnkStf() 196 ."' title='Grundstücksnachweis'>Buchung <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a>"; 197 } 198 echo "\n\t\t</p>" 199 ."\n\t</td>\n</tr>"; 200 } 201 202 // Start 17 203 ini_set("session.cookie_httponly", 1); 18 204 session_start(); … … 57 243 58 244 $erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 59 $dbg=$debug; // CONF in Arbeits-Variable 60 61 // Entwicklungsumgebung (in Conf definiert) ausschalten. 245 $dbg=$debug; 62 246 if ($nodebug === "j") {$dbg=0;} 63 247 … … 112 296 } 113 297 echo "\n\t\t\t<tr>" 114 ."\n\t\t\t<td class='head'>"; 115 if ($showkey) {echo "<span class='key'>".$row["stellenart"]." </span>";} 116 echo $row["stellev"]."</td>"; 117 echo "\n\t\t\t<td class='head'>Bezirk</td>" 118 ."\n\t\t\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>"; 119 if ($showkey) {echo "<span class='key'>".$blattkey." </span>";} 120 echo $blattart."</td>" 298 ."\n\t\t\t\t<td class='head'>".DsKy($row["stellenart"], 'Stellenart-*').$row["stellev"]."</td>" 299 ."\n\t\t\t\t<td class='head'>Bezirk</td>" 300 ."\n\t\t\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>".DsKy($blattkey, 'Blattart-*').$blattart."</td>" 121 301 ."\n\t\t\t</tr>\n\t\t\t<tr>" 122 ."\n\t\t\t\t<td title='Amtsgerichtsbezirk'>"; 123 if ($showkey) {echo "<span class='key'>".$row["stelle"]."</span><br>";} 124 echo htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8")."</td>" 125 ."\n\t\t\t\t<td title='Grundbuchbezirk'>"; 126 if ($showkey) {echo "<span class='key'>".$row["bezirk"]."</span><br>";} 127 echo htmlentities($row["beznam"], ENT_QUOTES, "UTF-8")."</td>" 302 ."\n\t\t\t\t<td title='Amtsgerichtsbezirk'>".DsKy($row["stelle"], 'Stelle-*').htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8")."</td>" 303 ."\n\t\t\t\t<td title='Grundbuchbezirk'>".DsKy($row["bezirk"], 'Grundbuchbezirk-*').htmlentities($row["beznam"], ENT_QUOTES, "UTF-8")."</td>" 128 304 ."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" 129 305 ."\n\t\t\t</tr>" … … 136 312 echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt.</p>"; 137 313 } else { // E I G E N T à M E R 138 $n = eigentuemer($gmlid, true, ""); // MIT Adressen.314 $n = eigentuemer($gmlid, true, false); // MIT Adressen. 139 315 if ($n === 0) { // keine NamensNr, kein Eigentuemer 140 316 echo "\n<p class='err'>Keine Namensnummer gefunden.</p>" … … 240 416 241 417 $zeianz = bnw_fsdaten($gml_bs, true); // FlurstÃŒcksdaten zur direkten Buchungsstelle 242 if ($zeianz === 0) {echo "\n<tr class='".$trclass."'>\n\t<td></td>\n\t<td colspan='7'><p class='warn'>Keine Flurstücke im berechtigten Bereich.</p></td>\n\t<td></td>\n</tr>";} 418 if ($zeianz === 0) { 419 echo "\n<tr class='".$trclass."'>\n\t<td><span class='wichtig'>".$lfdnr."</span></td>" 420 ."\n\t<td colspan='7'><p class='warn'>Keine Flurstücke im berechtigten Bereich.</p></td>\n\t<td></td>\n</tr>"; 421 } 243 422 244 423 } else { // herrschende Buchung … … 291 470 $zpaar=false; 292 471 while($rowb = pg_fetch_assoc($resb)) { 293 if ($b === 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde472 if ($b === 0) { // Ãberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde 294 473 echo "\n\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Berechtigte Grundbücher</h3>" 295 ."\n<table class='outer'>" 296 ."\n<tr>" 297 ."\n\t<td class='heads' title='lfd. Nr. auf diesem Blatt, wie im Teil Flurstücke'><span class='wichtig'>an BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='primäre Sortierung'></td>" 298 ."\n\t<td class='head'>Dienststelle</td>" 299 ."\n\t<td class='heads'>Bezirk</td>" 300 ."\n\t<td class='heads'><span class='wichtig'>Blatt</span></td>" 301 ."\n\t<td class='heads'>BVNR</td>" 302 ."\n\t<td class='head'>Buchungsart</td>" 303 ."\n\t<td class='head nwlink noprint'>Weitere Auskunft</td>" 304 ."\n</tr>"; 474 ."\n<table class='outer'>\n<tr>" 475 ."\n\t<td class='heads' title='lfd. Nr. auf diesem Blatt, wie im Teil Flurstücke'><span class='wichtig'>an BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='primäre Sortierung'></td>" 476 ."\n\t<td class='head'>Dienststelle</td>" 477 ."\n\t<td class='heads'>Bezirk</td>" 478 ."\n\t<td class='heads'><span class='wichtig'>Blatt</span></td>" 479 ."\n\t<td class='heads'>BVNR</td>" 480 ."\n\t<td class='head'>Buchungsart</td>" 481 ."\n\t<td class='head nwlink noprint'>Weitere Auskunft</td>\n</tr>"; 305 482 } 306 483 … … 324 501 ."\n\t<td>"; // Amtsgericht,Grundbuchamt 325 502 echo htmlentities($rowb["stellev"], ENT_QUOTES, "UTF-8")." "; 326 if ($showkey) {echo "<span class='key'>".$rowb["stelle"]."</span> ";} 327 echo htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8") 503 echo DsKy($rowb["stelle"], 'Stelle-*').htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8") 328 504 ."</td>" 329 ."\n\t<td>"; 330 if ($showkey) {echo "<span class='key'>".$rowb["bezirk"]."</span> ";} 331 echo htmlentities($rowb["beznam"], ENT_QUOTES, "UTF-8") 332 ."</td>" 505 ."\n\t<td>".DsKy($rowb["bezirk"], 'Grundbuch-Bezirk-*').htmlentities($rowb["beznam"], ENT_QUOTES, "UTF-8")."</td>" 333 506 ."\n\t<td><span class='wichtig'>".$blatt."</span></td>" 334 507 ."\n\t<td>".$bvnr."</td>" 335 ."\n\t<td title='".htmlentities($rowb["bartd"], ENT_QUOTES, "UTF-8")."'>"; 336 if ($showkey) {echo "<span class='key'>".$buch."</span> ";} 337 echo $bart 338 ."</td>" 508 ."\n\t<td title='".htmlentities($rowb["bartd"], ENT_QUOTES, "UTF-8")."'>".DsKy($buch, 'Buchungsart-*').$bart."</td>" 339 509 ."\n\t<td>" 340 510 ."\n\t\t<p class='nwlink noprint'>"; 341 342 511 // Bestand 343 if ($showkey) {echo "<span class='key'>".$blart."</span> ";} 344 echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&gmlid=".$gml_b; 345 if ($showkey) {echo "&showkey=j";} 346 echo "#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"]; 347 echo " \n\t\t\t<img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 348 echo "\n\t\t</p>" 512 echo "\n\t\t\t".DsKy($blart, 'Blattart-*')."<a href='alkisbestnw.php?gkz=".$gkz."&gmlid=".$gml_b.LnkStf() 513 ."#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"] 514 ." \n\t\t\t<img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>" 515 ."\n\t\t</p>" 349 516 ."</td>" 350 517 ."\n</tr>";
Note: See TracChangeset
for help on using the changeset viewer.