source: trunk/info/info/alkisn/alkisbestnw.php @ 389

Revision 389, 21.6 KB checked in by frank.jaeger, 7 years ago (diff)

ALKIS Buchauskunft überarbeitet: Bodenschätzung im FS-Nachweis. Filter auf "endet IS NULL".

RevLine 
[362]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
6
7        Version:
8        2016-02-24 Version fuer norGIS-ALKIS-Import
[377]9        2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen, Markierung der Sortierung
[387]10        2017-06-01 Function "eigentuemer" ohne Parameter $con
11        2017-06-08 Validierung Eingabeparameter, Farbwechsel der Tabelle je GrundstÃŒck, Feinschliff und HTML-Profilierung
[389]12        2017-10-09 SchlÃŒssel der Blattart bei berechtigten BlÀttern, sauber filtern auf endet IS NULL
[362]13*/
14session_start();
[387]15
16$showkey="n"; // Var. initalisieren
17$cntget = extract($_GET); // Parameter in Variable umwandeln
18
19// strikte Validierung aller Parameter
20if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
21if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
22if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
23if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
24
[362]25require_once("alkis_conf_location.php");
26if ($auth == "mapbender") {require_once($mapbender);}
27include("alkisfkt.php");
28?>
[377]29<!doctype html>
30<html lang="de">
[362]31<head>
[377]32        <meta charset="utf-8">
[387]33        <meta name="viewport" content="width=device-width, initial-scale=1.0">
[362]34        <title>ALKIS Bestandsnachweis</title>
35        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
36        <link rel="shortcut icon" type="image/x-icon" href="ico/Grundbuch.ico">
37        <script type="text/javascript">
38                function ALKISexport() {
39                        window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=grundbuch&gmlid=".$gmlid."'"; ?>);
40                }
41        </script>
42</head>
43<body>
44<?php
[377]45$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbestnw.php'");
[387]46if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
[362]47
48// G R U N D B U C H
49$sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS nr, g.blattart, wb.v AS blattartv, wb.d AS blattartd,
50b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.v AS stellev
51FROM ax_buchungsblatt g
52LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk
53LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.stelle=d.stelle
54LEFT JOIN alkis_wertearten wb ON cast(g.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart'
55LEFT JOIN alkis_wertearten wd ON cast(d.stellenart AS character varying)=wd.k AND wd.element='ax_dienststelle' AND wd.bezeichnung='stellenart'
[389]56WHERE g.gml_id= $1 AND g.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL;";
[362]57// .. AND d.stellenart=1000
58
59$v = array($gmlid);
60$res = pg_prepare("", $sql);
61$res = pg_execute("", $v);
62if (!$res) {
[387]63        echo "\n<p class='err'>Fehler bei Grundbuchdaten.</p>";
64        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]65}
66if ($row = pg_fetch_array($res)) {
67        $blattkey=$row["blattart"];
68        $blattart=$row["blattartv"];
69
[387]70        echo "<p class='gbkennz'>ALKIS Bestand ".$row["bezirk"]." - ".$row["nr"]."&nbsp;</p>"; // Balken
[362]71        echo "\n<h2><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Grundbuch</h2>"
72        ."\n<table class='outer'>\n<tr>\n\t<td>"; // Kennz. im Rahmen
73                if ($blattkey == 1000) {
[387]74                        echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>";
[362]75                } else {
[387]76                        echo "\n\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
[362]77                }
[387]78                        echo "\n\t\t<tr>"
79                                ."\n\t\t\t<td class='head'>"; // .d nicht gefÃŒllt
[362]80                                if ($showkey) {echo "<span class='key'>".$row["stellenart"]."&nbsp;</span>";}
81                                echo $row["stellev"]."</td>";
[387]82                                echo "\n\t\t\t<td class='head'>Bezirk</td>"
83                                ."\n\t\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>";
[362]84                                if ($showkey) {echo "<span class='key'>".$blattkey."&nbsp;</span>";}
85                                echo $blattart."</td>"
[387]86                        ."\n\t\t</tr>\n\t\t<tr>"
87                                ."\n\t\t\t<td title='Amtsgerichtsbezirk'>";
[362]88                                if ($showkey) {echo "<span class='key'>".$row["stelle"]."</span><br>";}
89                                echo htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8")."</td>"
[387]90                                ."\n\t\t\t<td title='Grundbuchbezirk'>";
[362]91                                if ($showkey) {echo "<span class='key'>".$row["bezirk"]."</span><br>";}
92                                echo htmlentities($row["beznam"], ENT_QUOTES, "UTF-8")."</td>"
[387]93                                ."\n\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$row["nr"]."</span></td>"
94                        ."\n\t\t</tr>"
95                ."\n\t\t</table>"
96                ."\n\t</td>\n\t<td>&nbsp;"
[362]97        ."\n\t</td>\n</tr>\n</table>";
98}
99
100if ($blattkey == 5000) { // fikt. Blatt
[387]101        echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt.</p>";
[362]102} else {
103        // E I G E N T U E M E R
[387]104        $n = eigentuemer($gmlid, true, ""); // MIT Adressen.
[362]105        if ($n == 0) { // keine NamensNr, kein Eigentuemer
[377]106                echo "\n<p class='err'>Keine Namensnummer gefunden.</p>"
107                ."\n<p>Bezirk: ".$row["bezirk"].", Blatt: ".$row["nr"].", Blattart ".$blattkey." (".$blattart.")</p>";
[362]108        }
109}
110
111// Vorab pruefen, ob der Fall "Rechte an .." vorliegt.
[387]112if ($blattkey == 1000) { // GB-Blatt  <istBestandteilVon<  sh=herrschend  >an/zu>  sd=dienend
113        $sql="SELECT count(sd.laufendenummer) AS anzahl "
114        ."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (sd.gml_id=ANY(sh.an) OR sd.gml_id=ANY(sh.zu)) "
115        ."WHERE sh.istbestandteilvon= $1 AND sd.endet IS NULL AND sh.endet IS NULL;";
[362]116
117        $v=array($gmlid); // GB-Blatt
118        $res=pg_prepare("", $sql);
119        $res=pg_execute("", $v);
[387]120        if (!$res) echo "\n<p class='err'>Fehler bei Suche nach Buchungen.</p>";
[362]121        $row=pg_fetch_array($res);
122        $anz=$row["anzahl"];
123} else { // 2000: Katasterblatt, 3000: Pseudoblatt, 5000: Fiktives Blatt
124        $anz=0;
125}
[387]126if ($anz > 0) { // auch Rechte: dann erweiterter Tabellen-Kopf
[377]127        echo "\n<hr>\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Rechte und Flurst&uuml;cke</h3>"
128        ."\n<table class='fs'>"
129        ."\n<tr>" // zus. Kopfz.
130                ."\n\t<td>&nbsp;</td>"
[362]131                ."\n\t<td class='dien' title='herrschendes Grundst&uuml;ck'>herrschende Buchungsart</td>"
[387]132                ."\n\t<td class='dien'>Anteil</td>"
[362]133                ."\n\t<td class='dien'>Bezirk</td>"
134                ."\n\t<td class='dien'>Blatt</td>"
135                ."\n\t<td class='dien'>BVNR</td>"
136                ."\n\t<td class='dien' title='dienendes Grundst&uuml;ck'>Buchungsart</td>"
137                ."\n\t<td>&nbsp;</td>"
138        ."\n</tr>";
[387]139} else { // nur FlurstÃŒcke, keine Rechte an/zu anderen Buchungen
[362]140        echo "\n<hr>\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"
141        ."\n<table class='fs'>";
142} // gemeinsame Kopfzeile
143echo "\n<tr>"
[377]144        ."\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundst&uuml;ck'><span class='wichtig'>BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='prim&auml;re Sortierung'></td>"
[362]145        ."\n\t<td class='head'>Buchungsart</td>"
[387]146        ."\n\t<td class='head'>&nbsp;</td>"
[377]147        ."\n\t<td class='heads'>Gemarkung</td>"
148        ."\n\t<td class='heads'>Flur</td>"
149        ."\n\t<td class='heads fsnr' title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>Flurst.</span></td>"
[387]150        ."\n\t<td class='head flag'>Fl&auml;che</td>"
151        ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
[362]152."\n</tr>";
153
154// Blatt ->  B u c h u n g s s t e l l e
155// aktuelles ax_buchungsblatt <istBestandteilVon< ax_buchungsstelle
156$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, s.zaehler, s.nenner, s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.v as bart, b.d
[377]157FROM ax_buchungsstelle s LEFT JOIN alkis_wertearten b ON cast(s.buchungsart AS character varying)=b.k AND b.element='ax_buchungsstelle' and b.bezeichnung='buchungsart'
[362]158WHERE s.istbestandteilvon= $1 AND s.endet IS NULL ORDER BY cast(s.laufendenummer AS integer);";
159
160$v=array($gmlid); // Rel. istBestandteilVon
161$res=pg_prepare("", $sql);
162$res=pg_execute("", $v);
163
164if (!$res) {
[387]165        echo "\n<p class='err'>Fehler bei Buchung.</p>";
166        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '". $gmlid."'</p>";}
[362]167}
168$i=0;
169$fscnt=0;
[387]170$zpaar=false;
[362]171while($row = pg_fetch_array($res)) { // Loop Buchungsstelle (GrundstÃŒck)
172        $lfdnr=$row["lfd"];
173        $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
[387]174        $gml_bs=$row["gml_id"]; // id der buchungsstelle
[362]175        $bartkey=$row["buchungsart"]; // SchlÃŒsselwert
176        $bart=$row["bart"]; // BuchungsART Text dazu
177        $bartstory=htmlentities($row["d"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet
178
179        if ($row["zaehler"] == "") {
180                $anteil = "";
181        } else {
182                $anteil = $row["zaehler"]."/".$row["nenner"];
183        }
[387]184
185        if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je GrundstÃŒck
186        $zpaar=!$zpaar;
187
[362]188        // F l u r s t u e c k s d a t e n  zur direkten Buchungsstelle
189        $j = bnw_fsdaten($con, $lfdnr, $gml_bs, $bart, $anteil, true, $bartkey, $bartstory); // return=Anzahl der FS
190        $fscnt=$fscnt + $j;
191        if ($j == 0) { //  k e i n e  Flurstuecke gefunden (Miteigentumsnteil usw.)
192                // Bei "normalen" Grundstuecken wurden Flurstuecksdaten gefunden und ausgegeben.
193                // Bei Miteigentumsanteil, Erbbaurecht usw. muss nach weiteren Buchungsstellen gesucht werden:
194                //  Buchungsstelle >an/zu> (andere)Buchungsstelle >istBestandTeilVon> "FiktivesBlatt (ohne) Eigentuemer"
195
[387]196                // dann andere "dienende" Buchungsstellen
197                //  sh=herrschend          sd=dienend
[362]198                //  ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes)
199                //  ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an)
[387]200
201                // Mit "UNION" um die FÀlle mit JOIN ÃŒber die Arrays "an" und "zu" unterscheiden zu können
202                $sql="SELECT uni.*, wb.v AS bart FROM "
203                ."(SELECT sda.gml_id, sda.buchungsart, sda.laufendenummer AS lfd, sda.beschreibungdesumfangsderbuchung AS udb, sda.nummerimaufteilungsplan AS nrap, sda.beschreibungdessondereigentums AS sond, 'an' as anzu "
204                ."FROM ax_buchungsstelle sha JOIN ax_buchungsstelle sda ON sda.gml_id=ANY(sha.an) "
205                ."WHERE sha.gml_id= $1 AND sha.endet IS NULL AND sda.endet IS NULL "
206                ."UNION SELECT sdz.gml_id, sdz.buchungsart, sdz.laufendenummer AS lfd, sdz.beschreibungdesumfangsderbuchung AS udb, sdz.nummerimaufteilungsplan AS nrap, sdz.beschreibungdessondereigentums AS sond, 'zu' as anzu "
207                ."FROM ax_buchungsstelle shz JOIN ax_buchungsstelle sdz ON sdz.gml_id=ANY(shz.zu) "
208                ."WHERE shz.gml_id= $1 AND shz.endet IS NULL AND sdz.endet IS NULL "
209                .") AS uni LEFT JOIN alkis_wertearten wb ON cast(uni.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart' "
210                ."ORDER BY uni.lfd;";
211        //      Testfall suchen: SELECT gml_id, zu, durch FROM ax_buchungsstelle WHERE NOT zu IS NULL OR NOT durch IS NULL;
212        //      Die Relationen "an" und "durch" kommen in der Praxis nicht vor.
213
214                $v=array($gml_bs); // gml_id der "herrschenden" Buchungs-Stelle
215                $resan=pg_prepare("", $sql); // Suche nach "dienender" Buchungsstelle
[362]216                $resan=pg_execute("", $v);
217                if (!$resan) {
[387]218                        echo "\n<p class='err'>Fehler bei 'andere Buchungsstelle'.</p>";
219                        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = '".$gml_bs."'</p>";}
[362]220                }
[387]221
[362]222                $a=0; // count
223                $altbvnr=""; // Gruppenwechsel
224                while($rowan= pg_fetch_array($resan)) {
[387]225                        $lfdnran=$rowan["lfd"]; // BVNR an
[362]226                        $gml_bsan=$rowan["gml_id"];     // id der buchungsstelle an
[387]227                        $baan=$rowan["bart"];   // Buchungsart an, entschluesselt
228                        $anzu=$rowan["anzu"];   // Welche Relation? Recht an oder Recht zu ?
[362]229
230                        // a n d e r e s   B l a t t  (an dem das aktuelle Blatt Rechte hat)
231                        // dienendes Grundbuch
232                        $sql ="SELECT b.gml_id, b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, wb.v AS blattartv, z.bezeichnung AS beznam "
233                        ."FROM ax_buchungsblatt b JOIN ax_buchungsstelle s ON b.gml_id=s.istbestandteilvon "
234                        ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk "
235                        ."LEFT JOIN alkis_wertearten wb ON cast(b.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' "
[389]236                        ."WHERE s.gml_id= $1 AND b.endet IS NULL AND s.endet IS NULL AND z.endet IS NULL ORDER BY b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
[362]237                        $v=array($gml_bsan);
238                        $fbres=pg_prepare("", $sql);
239                        $fbres=pg_execute("", $v);
240                        if (!$fbres) {
[387]241                                echo "\n<p class='err'>Fehler bei fiktivem Blatt.</p>";
242                                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}                       
[362]243                        }
244                        $b=0;
245                        while($fbrow = pg_fetch_array($fbres)) { // genau 1
246                                $fbgml=$fbrow["gml_id"];
247                                $fbland=$fbrow["land"];
248                                $fbbez=$fbrow["bezirk"];
249                                $beznam=$fbrow["beznam"];
[387]250                                $fbblatt=$fbrow["blatt"];
251                                $fbbartkey=$fbrow["blattart"]; // Key
252                                $fbbart=$fbrow["blattartv"];  // Value
[362]253                                $b++;
254                        }
255                        if ($b != 1) { // Überwachen: genau 1?
[387]256                                echo "\n<p class='err'>Anzahl fiktive Bl&auml;tter zu anderer Buchungstelle = ".$b."</p>";
[362]257                        }
258
259                        // G r u n d b u c h d a t e n  zur  a n d e r e n  Buchungsstelle
[387]260                        echo "\n<tr class='".$trclass."'>"
261                                ."\n\t<td id='bvnr".$lfdnr."'>"; // Sp.1 Erbbau BVNR, Sprungmarke
[362]262                                        if($bvnr == $altbvnr) { // gleiches Grundstueck
263                                                echo "&nbsp;"; // dann Anzeige unterdruecken
264                                        } else {
[387]265                                        //      echo "<a id='bvnr".$lfdnr."'></a>" // Sprungmarke
266                                                echo "<span class='wichtig'>".$bvnr."</span>";
[362]267                                                $altbvnr = $bvnr; // Gruppenwechsel merken
268                                        }
[377]269                                echo "</td>"
270                                ."\n\t<td class='dien'>"; // Sp.2 Buchung
[362]271                                        if ($showkey) {echo "<span class='key'>".$row["buchungsart"]."</span> ";}
[377]272                                echo $bart." an</td>"
[387]273                                ."\n\t<td class='dien'>".$anteil."</td>" // Sp.3 Anteil
274                                ."\n\t<td class='dien' title='Grundbuch-Bezirk'>"; // Sp.4 Gemarkg., hier Bezirk
[362]275                                        if ($showkey) {echo "<span class='key'>".$fbbez."</span> ";}
[387]276                                        echo htmlentities($beznam, ENT_QUOTES, "UTF-8")
[362]277                                ."</td>";
[387]278                                echo "\n\t<td class='dien' title='".$fbbart."'>".$fbblatt."</td>" // Sp. 5 Blatt
279                                        ."\n\t<td class='dien' title='Bestandsverzeichnis-Nummer'>".str_pad($lfdnran, 4, "0", STR_PAD_LEFT)."</td>" // Sp.6 BVNR
280                                        ."\n\t<td class='dien' title='Buchungsart'>"; // Sp.7 Buchungsart
[362]281                                        if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span> ";}
282                                        echo $baan." "
[377]283                                ."</td>"
284                                ."\n\t<td>" // Sp.8 Link ("an" oder "zu"?)
[387]285                                        ."\n\t\t<p class='nwlink noprint'>".$anzu; // Recht "an" oder "zu"
286                                        if ($showkey) {echo " <span class='key'>".$fbbartkey."</span>";} // Blatt-Art SchlÃŒssel
287                                        echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$fbgml;
[362]288                                                if ($showkey) {echo "&amp;showkey=j";}
[377]289                                                echo "#bvnr".$lfdnran // Sprungmarke auf der Seite
290                                                ."' title='Zum Grundbuchnachweis des dienenden Blattes'>";
[387]291                                                echo $fbbart // Blatt-Art entschlÃŒsselt
292                                        ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>\n\t\t</p>"
293                                ."\n\t</td>"
[362]294                        ."\n</tr>";
295
296                        // F l u r s t u e c k s d a t e n  zur  a n d e r e n  Buchungsstelle
297                        // Buchungsart wird nur in erster Zeile ausgegeben, hier leer
[387]298
[362]299                        $aj = bnw_fsdaten($con, $lfdnran, $gml_bsan, "", $anteil, false, "", ""); // return=Anz.FS
300                        $fscnt=$fscnt + $aj;
301                        // +++ Gibt es Sondereigentum beim fiktiven Blatt?
302                        if ($rowan["nrap"] != "") {
303                                echo "\n<tr>"
304                                        ."\n\t<td class='sond' colspan=8>Nr. im Aufteilungsplan: ".$rowan["nrap"]."</td>"
305                                ."\n</tr>";
306                        }
307                        if ($rowan["sond"] != "") {
308                                echo "\n<tr>"
[387]309                                        ."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".htmlentities($rowan["sond"], ENT_QUOTES, "UTF-8")."</td>"
[362]310                                ."\n</tr>";
311                        }
312                        $a++;
313                }
314                if ($a == 0) {
[387]315                        echo "\n<tr class='".$trclass."'>"
[362]316                                ."\n\t<td><span class='wichtig'>".$bvnr."</span></td>"
[387]317                                ."\n\t<td colspan=7><p class='warn'>Keine Flurst&uuml;cke zu Buchung ".$bvnr." im berechtigten Bereich.</p></td>"
[362]318                        ."\n</tr>";
319                }
320        }
321        $i++;
322        if ($row["nrap"] != "") { // Nr im Auft.Plan
323                echo "\n<tr>"
324                        ."\n\t<td class='nrap' colspan=8>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td>"
325                ."\n</tr>";
326        }
327        if ($row["sond"] != "") { // Sondereigentumsbeschreibung
328                echo "\n<tr>"
329                        ."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td>"
330                ."\n</tr>";
331        } // Ende Buchungsstelle/BVNR
332} // Ende Loop
333echo "\n</table>";
334
335if ($i == 0) {
[387]336        echo "\n<p class='err'>Keine Buchung gefunden.</p>";
[362]337} else {
338        if ($i > 5 and $fscnt > 5) { // nur wenn nicht auf einen Blick zu erkennen
[387]339                echo "\n<p class='cnt'>".$i." Buchungen mit ".$fscnt." Flurst&uuml;cken</p>";
[362]340        }
341}
342
343// B e r e c h t i g t e  Buchungsblaetter  mit Recht an/zu dem aktuellen (fiktiven?) Blatt
344
345// bf                          sf            sb                               bb
346// Blatt   <istBestandteilVon< Stelle  <an<  Stelle      >istBestandteilVon>  Blatt
347// Fiktiv                      Fiktiv  <zu<  Berechtigt                       Berechtigt
348$sql="SELECT sf.laufendenummer AS anlfdnr, bb.gml_id, bb.land, bb.bezirk, bb.buchungsblattnummermitbuchstabenerweiterung AS blatt, bb.blattart, wa.v AS blattartv,
349sb.gml_id AS gml_s, sb.laufendenummer AS lfdnr, sb.buchungsart, wb.v AS bart, wb.d AS bartd, bz.bezeichnung AS beznam, d.bezeichnung, d.stelle, d.stellenart, wd.v AS stellev
350FROM ax_buchungsstelle sf JOIN ax_buchungsstelle sb ON (sf.gml_id=ANY(sb.an) OR sf.gml_id=ANY(sb.zu))
351JOIN ax_buchungsblatt bb ON bb.gml_id=sb.istbestandteilvon
352LEFT JOIN ax_buchungsblattbezirk bz ON bb.land=bz.land AND bb.bezirk=bz.bezirk
353LEFT JOIN ax_dienststelle d ON bz.land=d.land AND bz.stelle=d.stelle
354LEFT JOIN alkis_wertearten wa ON cast(bb.blattart AS character varying)=wa.k AND wa.element='ax_buchungsblatt' AND wa.bezeichnung='blattart'
355LEFT JOIN alkis_wertearten wb ON cast(sb.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart'
356LEFT JOIN alkis_wertearten wd ON cast(d.stellenart AS character varying)=wd.k AND wd.element='ax_dienststelle' AND wd.bezeichnung='stellenart'
[389]357WHERE sf.istbestandteilvon = $1 AND sf.endet IS NULL AND sb.endet IS NULL AND bb.endet IS NULL AND bz.endet IS NULL AND d.endet IS NULL
[377]358ORDER BY cast(sf.laufendenummer AS integer), bz.bezeichnung, bb.buchungsblattnummermitbuchstabenerweiterung, cast(sb.laufendenummer AS integer);";
[362]359
360$v = array($gmlid);
361$resb = pg_prepare("", $sql);
362$resb = pg_execute("", $v);
363if (!$resb) {
[387]364        echo "\n<p class='err'>Fehler bei 'Berechtigte Bl&auml;tter.</p>";
365        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]366}
367$b=0; // count: Buchungen / BlÀtter
[387]368$zpaar=false;
[362]369while($rowb = pg_fetch_array($resb)) {
370        if ($b == 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde
[387]371                echo "\n\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Berechtigte Grundb&uuml;cher</h3>"
[362]372                ."\n<table class='outer'>"
373                ."\n<tr>"
[377]374                        ."\n\t<td class='heads' title='lfd. Nr. auf diesem Blatt, wie im Teil Flurst&uuml;cke'><span class='wichtig'>an BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='prim&auml;re Sortierung'></td>"
[362]375                        ."\n\t<td class='head'>Dienststelle</td>"
[377]376                        ."\n\t<td class='heads'>Bezirk</td>"
377                        ."\n\t<td class='heads'><span class='wichtig'>Blatt</span></td>"
378                        ."\n\t<td class='heads'>BVNR</td>"
[362]379                        ."\n\t<td class='head'>Buchungsart</td>"
380                        ."\n\t<td class='head nwlink noprint'>Weitere Auskunft</td>"
381                ."\n</tr>";
382        }
383
[389]384        $anlfdnr=$rowb["anlfdnr"];      // an BVNR
[362]385        $anlfdnr0=str_pad($anlfdnr, 4, "0", STR_PAD_LEFT); // mit fÃŒhr.0
[389]386        $gml_b=$rowb["gml_id"];         // id des ber. Blattes
387        $gml_s=$rowb["gml_s"];          // id der ber. B-Stelle
[362]388        $blart=$rowb["blattart"];
389
[389]390        $buch=$rowb["buchungsart"];     // Buchungsart Stelle berechtigt
391        $bart=$rowb["bart"];            // BA entschl.
392        $lfdnr=$rowb["lfdnr"];          // BVNR ber.
[362]393        $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
394
[387]395        if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je Zeile = GrundstÃŒck
396        $zpaar=!$zpaar;
[362]397
[387]398        echo "\n<tr class='".$trclass."'>"; // Der Teil "berechtigte GrundbÃŒcher" ist sortiert wie oberer Teil "FlurstÃŒcke"
399                echo "\n\t<td><span class='wichtig'>".$anlfdnr0."</span></td>"
[377]400                ."\n\t<td>"; // Amtsgericht,Grundbuchamt
[387]401                        echo htmlentities($rowb["stellev"], ENT_QUOTES, "UTF-8")." ";
[362]402                        if ($showkey) {echo "<span class='key'>".$rowb["stelle"]."</span> ";}
[387]403                        echo htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8")
[362]404                ."</td>"
405                ."\n\t<td>";
406                        if ($showkey) {echo "<span class='key'>".$rowb["bezirk"]."</span> ";}
[387]407                        echo htmlentities($rowb["beznam"], ENT_QUOTES, "UTF-8")
[362]408                ."</td>"
409                ."\n\t<td><span class='wichtig'>".$rowb["blatt"]."</span></td>"
410                ."\n\t<td>".$bvnr."</td>"
411                ."\n\t<td title='".htmlentities($rowb["bartd"], ENT_QUOTES, "UTF-8")."'>";
412                        if ($showkey) {echo "<span class='key'>".$buch."</span> ";}
413                        echo $bart
414                ."</td>"
415                ."\n\t<td>"
[387]416                        ."\n\t\t<p class='nwlink noprint'>";
[389]417                        if ($showkey) {echo "<span class='key'>".$blart."</span> ";} // NEU!
[387]418                        echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml_b;
[362]419                                if ($showkey) {echo "&amp;showkey=j";}
[387]420                                echo "#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"]; // "an" ggf. durch "zu" ersetzen?
[362]421                                echo " \n\t\t\t<img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"
422                        ."\n\t\t</p>"
423                ."</td>"
424        ."\n</tr>";
425        $b++;
426}
427if ($b == 0) {
428        if ($blattkey > 2000 ) { // Warnung nicht bei Grundbuchblatt 1000 und Katasterblatt 2000
[387]429                echo "\n<p class='err'>Keine berechtigten Bl&auml;tter zu ".$blattart." (".$blattkey.") gefunden.</p>";
[362]430        }
431} else {
432        echo "\n</table>";
433        if ($i > 1) {
[387]434                echo "\n<p class='cnt'>Rechte anderer Buchungsstellen an ".$b." der ".$i." Buchungen</p>";
[362]435        }
436}
437?>
438
[377]439<div class='buttonbereich noprint'>
[387]440        <hr>
[377]441        <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
442        <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp;
443        <a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download_gb.png" width="32" height="16" alt="Export"></a>&nbsp;
444</div>
[362]445<?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
446</body>
447</html>
Note: See TracBrowser for help on using the repository browser.