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

Revision 375, 15.2 KB checked in by frank.jaeger, 7 years ago (diff)

kleine Korrekturen an den Buchauskunft

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*/
12
13function footer($gmlid, $link, $append) {
14        // Einen Seitenfuss ausgeben.
15        // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor
16        // Den URL-Parameter "&showkey=j/n" umschalten lassen.
17        // $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, &ltyp=m/p/o bei Lage
18        global $gkz, $showkey, $hilfeurl, $auth;
19
20        echo "\n<div class='confbereich noprint'>"
21        ."\n<table class='outer'>\n<tr>";
22
23        // Spalte 1: Info Benutzerkennung
24        if ($auth == "mapbender") {
25                $customer=$_SESSION["mb_user_name"];
26                echo "\n\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>";
27        } else {
28                echo "\n\t<td>&nbsp;</td>";
29        }
30
31        // Spalte 2: Umschalter
32        echo "\n\t<td title='Konfiguration'>";
33                $mylink ="\n\t\t<a class='gmlid' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append;
34
35                if ($showkey) { // Umschalten SchlÃŒssel ein/aus
36                        echo $mylink."&amp;showkey=n' title='Verschl&uuml;sselungen ausblenden'>Schl&uuml;ssel aus</a>";
37                } else {
38                        echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>";
39                }
40        echo "\n\t</td>";
41
42        // Spalte 3
43        echo "\n\t<td title='Hilfe'>"
44        ."\n\t\t<p class='nwlink'>\n\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t</p>\n\t</td>"
45        ."\n</tr>\n</table>\n</div>\n";
46        return 0;
47}
48
49function ber_bs_hinw($gmls) {
50        // Unter einem Grundbuch-Link den Hinweis auf "berechtigte Buchungssstellen" anzeigen
51        // In FS-Nachweis wird nur der EigentÃŒmer des direkt gebuchten GrundstÃŒcks angezeigt.
52        // Den Erbbauberechtigten sieht man erst in der Grundbuch-Auskunft.
53        global $debug, $showkey;
54
55        // Buchungstelle dien. >an> Buchungstelle herr.
56        $sql ="SELECT count(sh.gml_id) AS anz, sh.buchungsart, a.v "
57        ."FROM ax_buchungsstelle sd JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) "
58        ."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) "
59        ."WHERE sd.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' "
60        ."GROUP BY sh.buchungsart, a.v;";
61
62        $v = array($gmls); // id dienende BS
63        $resan = pg_prepare("", $sql);
64        $resan = pg_execute("", $v);
65        if (!$resan) {
66                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>\n";
67                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmls."'</p>";}
68        }
69        $an=0;
70        while($rowan = pg_fetch_array($resan)) {
71                $an++;
72                if ($an == 1) {echo "\n\t<br>\n\t<p class='nwlink' title='Andere Grundst&uuml;cke mit Rechten an diesem.'>Berechtigte Buchungen:<br><b>";}
73                if ($an > 1) {echo",<br>";} // kann es gemischste Buchungsarten geben?
74                echo $rowan["anz"]." ".htmlentities($rowan["v"], ENT_QUOTES, "UTF-8");
75                if ($showkey) {echo " <span class='key'>(".$rowan["buchungsart"].")</span>";}
76        }
77        if ($an == 0) {
78                echo "<br><p class='nwlink' title='Kein anderes Grundst&uuml;ck hat ein Recht an diesem.'>Keine berechtigte Buchung</p>";
79        } else {
80                echo "</b></p>";
81        }
82        pg_free_result($resan);
83}
84
85function kurz_namnr($lang) {
86        // Namensnummer kÃŒrzen. Nicht benötigte Stufen der Dezimalklassifikation abschneiden
87        $kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende)
88        $kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang)
89        $kurz=ltrim($kurz, "0"); // fuehrende Nullen am Anfang
90        $kurz=str_replace(".0",".",$kurz); // fuehrende Null jeder Stufe
91        return $kurz;
92}
93
94function bnw_fsdaten($con, $lfdnr, $gml_bs, $ba, $anteil, $bvnraus, $bartkey, $bartstory) {
95/*      Bestandsnachweis - Flurstuecksdaten
96        Die Tabellenzeilen mit den Flurstuecksdaten zu einer Buchungsstelle im Bestandsnachweis ausgeben.
97        Die Funktion wird je einmal aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall).
98        Weiterere Aufrufe ggf. bei Erbbaurecht fÃŒr die mit "an" verknuepften Buchungsstellen.
99        Table-Tag und Kopfzeile im aufrufenden Programm. */
100        global $debug, $gkz, $showkey;
101
102        // F L U R S T U E C K
103        $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche
104        FROM ax_flurstueck f JOIN ax_buchungsstelle s ON f.istgebucht=s.gml_id
105        LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
106        WHERE s.gml_id= $1 AND f.endet IS NULL AND s.endet IS NULL AND g.endet IS NULL ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
107
108        $v = array($gml_bs);
109        $resf = pg_prepare("", $sql);
110        $resf = pg_execute("", $v);
111        if (!$resf) {echo "<p class='err'>Fehler bei Flurst&uuml;ck</p>\n";}
112
113        if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben
114                $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
115        }
116        $altlfdnr="";
117        $j=0;
118        while($rowf = pg_fetch_array($resf)) {
119                $flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
120                // ohne fuehrende Nullen?
121                $fskenn=$rowf["zaehler"];
122                if ($rowf["nenner"] != "") { // Bruchnummer
123                        $fskenn.="/".$rowf["nenner"];
124                }
125                $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
126
127                echo "\n<tr>"; // eine Zeile je Flurstueck
128                        // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS
129                        if($lfdnr == $altlfdnr) { // gleiches Grundstueck
130                                echo "\n\t<td>&nbsp;</td>"
131                                ."\n\t<td>&nbsp;</td>"
132                                ."\n\t<td>&nbsp;</td>";
133                        } else { // Sprungmarke, BVNR
134                                echo "\n\t<td>"
135                                        ."<a name='bvnr".$lfdnr."'></a>"
136                                        ."<span class='wichtig'>".$bvnr."</span>"
137                                ."</td>";
138
139                                echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart
140                                        if ($showkey) {echo "<span class='key'>".$bartkey."</span>&nbsp;";} // Schluessel
141                                        echo $ba; // entschluesselt
142                                echo "</td>"
143                                ."\n\t<td>&nbsp;</td>"; // Anteil
144                                $altlfdnr=$lfdnr;
145                        }
146                        //Sp. 4-7 aus Flurstueck
147                        echo "\n\t<td>";
148                        if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";}
149                        echo $rowf["bezeichnung"]."</td>"
150                        ."\n\t<td>".$flur."</td>"
151                        ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span>"
152                        ."</td>"
153                        ."\n\t<td class='fla'>".$flae."</td>";
154
155                        echo "\n\t<td><p class='nwlink noprint'>"
156                                ."<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
157                                        if ($showkey)   {echo "&amp;showkey=j";}
158                                        echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck "
159                                        ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
160                                ."</a>"
161                        ."</p></td>"
162                ."\n</tr>";
163
164                $j++;
165        } // Ende Flurstueck
166
167/*      if ($j == 0 ) { // nur Entw.
168                if ($debug > 1) {echo "<p class='dbg'>Keine FS gefunden</p>";}
169                if ($debug > 2) {echo "<p class='dbg'>SQL='".$sql."'<br>$1 = '".$gml_bs."'</p>";}
170        } */
171        pg_free_result($resf);
172        return $j;
173}
174
175function eigentuemer($con, $gmlid, $mitadresse, $lnkclass) {
176        // Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben
177        // Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
178        // Parameter:
179        //      $gmlid = ID GB-Blattes
180        //      $mitadresse = Option (true/false) ob die Adresszeile ausgegeben werden soll
181        // Return = Anzahl Namensnummern
182
183        // Schleife 1: N a m e n s n u m m e r
184        // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt
185        global $debug, $gkz, $showkey;
186
187        // Link ÃŒber Java-Class? (Ja in alkisinlayausk.php, sonst normal)
188        if ($lnkclass == "") {
189                $lnkvor = "";
190                $lnknach = "";
191        } else {
192                $lnkvor  = "javascript:".$lnkclass."(\"";
193                $lnknach = "\")";
194        } // Beispiel-Link href='javascript:imFenster(\"alkislage.php?gkz= ... ."\")'>xxx ";
195
196        $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
197FROM ax_namensnummer n
198LEFT JOIN alkis_wertearten wn ON cast(n.artderrechtsgemeinschaft AS character varying)=wn.k AND wn.element='ax_namensnummer' AND wn.bezeichnung='artderrechtsgemeinschaft'
199LEFT JOIN alkis_wertearten we ON cast(n.eigentuemerart AS character varying)=we.k AND we.element='ax_namensnummer' AND we.bezeichnung='eigentuemerart'
200WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;";
201
202        $v = array($gmlid); // 16 Stellen bei Relationen
203        $resn = pg_prepare("", $sqln);
204        $resn = pg_execute("", $v);
205
206        if (!$resn) {
207                echo "<p class='err'>Fehler bei Eigent&uuml;mer</p>\n";
208                if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqln."<br>$1=gml= '".$gmlid."'</p>";}
209        }
210
211        echo "\n\n<table class='eig'>";
212        $n=0; // Z.NamNum.
213
214        while($rown = pg_fetch_array($resn)) {
215                $gmlnn=$rown["gml_id"];
216                echo "\n<tr>";
217                        echo "\n\t<td class='nanu' title='Namens-Nummer'>\n\t\t<p>"; // Sp. 1
218                                // VOR die Tabelle: "EigentÃŒmer"
219                                $namnum=kurz_namnr($rown["lfd"]);
220                                echo $namnum."&nbsp;";
221                        echo "</p>\n\t</td>";
222
223                        echo "\n\t<td>"; // Sp. 2
224                        $rechtsg=$rown["adr"];
225                        if ($rechtsg != "" ) {
226                                if ($rechtsg == 9999) { // sonstiges
227                                        echo "\n\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."</p>";
228                                } else {
229                                        echo "\n\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."</p>";
230                                }
231                        }
232                        //if ($rown["anlass"] > 0 ) {echo "<p>Anlass=".$rown["anlass"]."</p>";} // TEST:
233
234                        // Schleife Ebene 2: andere Namensnummern
235                        // Beziehung   ax_namensnummer >bestehtAusRechtsverhaeltnissenZu>  ax_namensnummer
236
237                        // Die Relation 'Namensnummer' besteht aus RechtsverhÀltnissen zu 'Namensnummer' sagt aus,
238                        // dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehören können.
239                        // Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer,
240                        // die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt.
241
242                // Schleife 2: P e r s o n
243                // Beziehung: ax_person  <benennt<  ax_namensnummer
244
245        //      $sqlp="SELECT p.gml_id, p.nachnameoderfirma, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad "
246        //      ."FROM ax_person p JOIN ax_namensnummer nn ON nn.benennt=p.gml_id WHERE nn.gml_id= $1 AND p.endet IS NULL AND nn.endet IS NULL;";
247        //      $v = array($gmlnn);
248
249        // 03.03.16:
250                $sqlp="SELECT gml_id, nachnameoderfirma, vorname, geburtsname, geburtsdatum, namensbestandteil, akademischergrad "
251                ."FROM ax_person WHERE gml_id= $1 AND endet IS NULL;";
252                $gmlpers=$rown["benennt"];
253                $v = array($gmlpers); // gml_id von ax_person
254                $resp = pg_prepare("", $sqlp);
255                $resp = pg_execute("", $v);
256                if (!$resp) {
257                        echo "\n\t<p class='err'>Fehler bei Person</p>\n";
258                        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlp."<br>$1=gml= '".$gmlpers."'</p>";}
259                }
260
261                $i=0; // cnt Person
262                while($rowp = pg_fetch_array($resp)) { // Schleife weglassen? nn >benennt> Person ist KEIN Array!
263                        $diePerson="";
264                //      +++ Anrede?
265                        if ($rowp["akademischergrad"] <> "") {$diePerson=$rowp["akademischergrad"]." ";}
266                        $diePerson.=$rowp["nachnameoderfirma"];
267                        if ($rowp["vorname"] <> "") {$diePerson.=", ".$rowp["vorname"];}
268                        if ($rowp["namensbestandteil"] <> "") {$diePerson.=". ".$rowp["namensbestandteil"];}
269                        if ($rowp["geburtsdatum"] <> "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];}
270                        if ($rowp["geburtsname"] <> "") {$diePerson.=", geb. ".$rowp["geburtsname"];}
271                        $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute
272
273                        // Spalte 1 enthÀlt die Namensnummer, nur in Zeile 0
274                        if ($i > 0) {
275                                echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>";
276                        }
277                        // Spalte 2 = Angaben
278                        $eiartkey=$rown["eigentuemerart"]; // Key
279                        $eiart=$rown["eiartv"]; // Value
280                        echo "\n\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t</td>";
281
282                        // Spalte 3 = Link
283                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
284                                if ($showkey AND $eiartkey != '') { // oft leer
285                                                echo "<span class='key'>(".$eiartkey.")</span> ";
286                                }
287                                echo "\n\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$rowp[0];
288                                if ($showkey)   {echo "&amp;showkey=j";}
289                                echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart;
290                                echo " <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t</p>";
291                        echo "\n\t</td>\n</tr>";
292
293                        if ($mitadresse) {
294                                // Schleife 3:  A d r e s s e  (OPTIONAL)
295                                $sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland "
296                                ."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 LIMIT 2;";
297                                $gmlp=$rowp["gml_id"]; // Person
298                                $v = array($gmlp);
299                                $resa = pg_prepare("", $sqla);
300                                $resa = pg_execute("", $v);
301
302                                if (!$resa) {
303                                        echo "\n\t<p class='err'>Fehler bei Adressen</p>\n";
304                                        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlp."'</p>";}
305                                }
306                                $j=0;
307                                while($rowa = pg_fetch_array($resa)) {
308                                        $j++;
309                                        if ($j == 1) { // erste Adresse anzeigen
310                                                $gmla=$rowa["gml_id"];
311                                                $plz=$rowa["plz"]; // integer
312                                                if($plz == 0) {
313                                                        $plz="";
314                                                } else {
315                                                        $plz=str_pad($plz, 5, "0", STR_PAD_LEFT);
316                                                }
317                                                $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8");
318                                                $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8");
319                                                $hsnr=$rowa["hausnummer"];
320                                                $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8");
321
322                                                echo "\n<tr>\n\t<td>&nbsp;</td>"; //Sp. 1
323                                                echo "\n\t<td><p class='gadr'>"; //Sp. 2
324                                                if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";}
325                                                if ($plz.$ort != "") {echo $plz." ".$ort;}
326                                                if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;}
327                                                echo "</p></td>\n\t<td>"; // Sp. 3
328                                                echo "&nbsp;</td>\n</tr>";
329                                        } else { // manchmal dopplete Angaben (_straße / _str.)
330                                                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>";
331                                        }
332                                }
333                                pg_free_result($resa);
334                        }
335                        // 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG"
336
337                        $i++; // cnt Person
338
339                        // Anteil als eigene Tab-Zeile:
340                        $zaehler=$rown["zaehler"];
341                        if ($zaehler != "") {
342                                $zaehler=str_replace(".", ",", $zaehler); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht
343                                $nenner=str_replace(".", ",", $rown["nenner"]);
344                                $comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundst&uuml;ck oder Recht).";
345                                echo "\n<tr>\n\t<td>&nbsp;</td>"; // Sp. 1
346                                echo "\n\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>";
347                                echo "\n\t<td>&nbsp;</td>\n</tr>"; // Sp. 3
348                        }
349                } // End Loop Person
350                if ($i == 0) { // Kine Parson. Kommt vor hinter Zeile "Erbengemeinschaft", ist dann KEIN Fehler
351                        if ($rechtsg != 9999) {
352                                echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>";
353                        } else {
354                                if ($debug > 1) { // nur bei Entwicklung
355                                        echo "\n<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";
356                                }
357                        }
358                        echo "</td>\n\t<td>&nbsp;</td>\n<tr>";
359                }
360                $n++; // cnt NamNum
361        } // End Loop NamNum
362        echo "\n</table>\n";
363        if ($n == 0) { // bei "Fiktives Blatt" KEIN Fehler
364                if ($debug > 1) {
365                        echo "<p class='dbg'>keine Namensnummern zum Blatt</p>";
366                        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml(Blatt)= '".$gmlid."'</p>";}
367                }
368        }
369        pg_free_result($resn);
370        return $n;
371} // End Function eigentuemer
372
373?>
Note: See TracBrowser for help on using the repository browser.