Finished St Stefan ob Stainz Import

This commit is contained in:
Frank Schubert
2023-05-16 18:41:26 +02:00
parent 9a74011139
commit 4853ff0c01
7 changed files with 115 additions and 166 deletions

View File

@@ -7,7 +7,7 @@
<div class="container-fluid">
<div class="row">
<div class="col-md-6 <?=(MFAPPNAME == "devthetool") ? "text-danger" : ""?>">
<span title="<?=MFAPPNAME?>">the tool &copy; <?=date('Y')?></span> <a href="https://www.xinon.at">Xinon GmbH</a> - Made by fronk
<span title="<?=MFAPPNAME?>">the tool &copy; <?=date('Y')?></span> <a href="https://www.xinon.at">Xinon GmbH</a>
</div>
</div>

View File

@@ -118,7 +118,7 @@ class ADBNetzgebietModel {
if(array_key_exists("netzgebiet_id", $filter)) {
$netzgebiet_id = $filter['netzgebiet_id'];
if(is_numeric($netzgebiet_id)) {
$where .= " AND Netzgebiet.netzgebiet_id=$netzgebiet_id";
$where .= " AND Netzgebiet.id=$netzgebiet_id";
} elseif(is_array($netzgebiet_id) && count($netzgebiet_id)) {
$where .= " AND Netzgebiet.id IN (". implode(",", $netzgebiet_id).")";
}

View File

@@ -127,9 +127,18 @@ class NetworkModel {
if(array_key_exists("adb_network_id", $filter)) {
$adb_network_id = $filter['adb_network_id'];
if(is_numeric($adb_network_id)) {
$where .= " AND adb_network_id=$adb_network_id";
$where .= " AND adb_netzgebiet_id=$adb_network_id";
} elseif(is_array($adb_network_id) && count($adb_network_id)) {
$where .= " AND adb_network_id IN (". implode(",", $adb_network_id).")";
$where .= " AND adb_netzgebiet_id IN (". implode(",", $adb_network_id).")";
}
}
if(array_key_exists("adb_netzgebiet_id", $filter)) {
$adb_netzgebiet_id = $filter['adb_netzgebiet_id'];
if(is_numeric($adb_netzgebiet_id)) {
$where .= " AND adb_netzgebiet_id=$adb_netzgebiet_id";
} elseif(is_array($adb_netzgebiet_id) && count($adb_netzgebiet_id)) {
$where .= " AND adb_netzgebiet_id IN (". implode(",", $adb_netzgebiet_id).")";
}
}

View File

@@ -85,9 +85,9 @@ class Preordercampaign extends mfBaseModel {
$netzgebiet_ids = null;
foreach($this->getProperty("salesclusters") as $scluster) {
$netzgebiet_ids[] = $scluster->id;
if($scluster->id) $netzgebiet_ids[] = $scluster->id;
}
if(count($netzgebiet_ids)) {
if(is_array($netzgebiet_ids) && count($netzgebiet_ids)) {
foreach(ADBNetzgebietModel::search(["netzgebiet_id" => $netzgebiet_ids]) as $netzgebiet) {
$total += $netzgebiet->unit_count;
}

View File

@@ -251,32 +251,34 @@ while($csv = fgetcsv($input, 0, ";")) {
];
$hausnummer = ADBHausnummerModel::create($hausnummer_data);
//var_dump($hausnummer);exit;
//$hausnummer->save();
$hausnummer->save();
continue;
}
} else {
//echo "Hausnummer extref: \033[1m$hausnummer_extref\033[0m | gem: \033[1m$gem_name\033[0m | plz: \033[1m$plz_name\033[0m | ort: \033[1m$ort_name\033[0m | strasse: \033[1m$strasse_name\033[0m | hausnummer: \033[1m$hausnummer_name\033[0m |";
//echo "Zusatz: \033[1m$addresszusatz\033[0m | (\033[1m$nutzung\033[0m) | ADRCD: \033[1m$adrcd\033[0m\n";
//var_dump($hausnummer);exit;
//continue;
if($hausnummer->netzgebiet_id != $netzgebiet->id) {
$hausnummer->netzgebiet_id = $netzgebiet->id;
//$hausnummer->save();
}
if($hausnummer->extref != $hausnummer_extref) {
$hausnummer->extref = $hausnummer_extref;
//$hausnummer->save();
}
if($lat && $long) {
$hausnummer->gps_lat = (float)$lat;
$hausnummer->gps_long = (float)$long;
}
$hausnummer->freigabe = $default_freigabe;
$hausnummer->save();
}
//echo "Hausnummer extref: \033[1m$hausnummer_extref\033[0m | gem: \033[1m$gem_name\033[0m | plz: \033[1m$plz_name\033[0m | ort: \033[1m$ort_name\033[0m | strasse: \033[1m$strasse_name\033[0m | hausnummer: \033[1m$hausnummer_name\033[0m |";
//echo "Zusatz: \033[1m$addresszusatz\033[0m | (\033[1m$nutzung\033[0m) | ADRCD: \033[1m$adrcd\033[0m\n";
//var_dump($hausnummer);exit;
//continue;
if($hausnummer->netzgebiet_id != $netzgebiet->id) {
$hausnummer->netzgebiet_id = $netzgebiet->id;
//$hausnummer->save();
}
if($hausnummer->extref != $hausnummer_extref) {
$hausnummer->extref = $hausnummer_extref;
//$hausnummer->save();
}
if($lat && $long) {
$hausnummer->gps_lat = (float)$lat;
$hausnummer->gps_long = (float)$long;
}
$hausnummer->freigabe = $default_freigabe;
$hausnummer->save();
$existing_units_count = ADBWohneinheitModel::count(["hausnummer_id" => $hausnummer->id]);
//echo "$existing_units_count\n";

View File

@@ -1,123 +0,0 @@
#!/usr/bin/php
<?php
//require 'vendor/autoload.php';
require("../../../config/config.php");
define('FRONKDB_SQLDEBUG',false);
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php");
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php");
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
$me = new User(1);
$filename = __DIR__."/import/C03080_sbidi_Ortskern_Homes_221025.csv";
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$log = mfLoghandler::singleton();
$input = fopen($filename, "r");
$hausnummer_extref_trans = [
"25138081" => "25138353",
"25138090" => "25138402",
"25138104" => "25138399",
"25138112" => "25138285",
"25138116" => "25138401",
"25138172" => "25138384",
"25138229" => "25138283",
"25138246" => "25138346",
"25138249" => "25151924",
"25138261" => "25138413",
"25138282" => "25138388",
"25138284" => "25138391",
"25151923" => "25151924",
"25138547" => "25138605",
"25138576" => "25138603",
"25138578" => "25138599",
"25138427" => "25138493",
"25138431" => "25138494",
"25138480" => "25138532",
"25138507" => "25138479"
];
$wohnextref_zusatz = [
"SDIHome_92719443457_1666705401" => "Pfarrheim",
"SDIHome_92718863105_1666705401" => "Ölmühle",
"SDIHome_92718862081_1666705401" => "Ölmühle",
"SDIHome_92718073089_1666705401" => "Hinterhofgebäude",
"SDIHome_92718072065_1666705401" => "Hinterhofgebäude",
"SDIHome_92718071041_1666705401" => "Hinterhofgebäude",
"SDIHome_92718077185_1666705401" => "Lagerhalle und Werkstatt",
"SDIHome_92718076161_1666705401" => "Lagerhalle und Werkstatt",
"SDIHome_92719454721_1666705401" => "Zubau Musikheim",
"SDIHome_92719358977_1666705401" => "Firma",
"SDIHome_92719222273_1666705401" => "Wohnhaus",
"SDIHome_92719249921_1666705401" => "Wohnung",
"SDIBuilding_104216715265_1659686456" => "a",
"SDIHome_92719070465_1666705401" => "Nebengebäude"
];
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
if($i == 1) continue;
if(!trim($csv[0])) {
continue;
}
$zusatz = false;
$wohneinheit_extref = trim($csv[0]);
$hausnummer_extref = trim($csv[1]);
$adresse = trim($csv[7]);
if(array_key_exists($hausnummer_extref, $hausnummer_extref_trans)) {
$hausnummer_extref = $hausnummer_extref_trans[$hausnummer_extref];
}
$hausnummer = ADBHausnummerModel::getFirst(['extref' => $hausnummer_extref]);
if(!$hausnummer) {
if(preg_match('/GST /', $adresse)) continue;
die("Hausnummer $hausnummer_extref nicht gefunden\n");
}
if(array_key_exists($wohneinheit_extref, $wohnextref_zusatz)) {
$zusatz = $wohnextref_zusatz[$wohneinheit_extref];
}
// get last wohneinheit
$num = 0;
$last_we = getLastWohneinheit($hausnummer->id);
if($last_we) {
$num = ($last_we->num) ? $last_we->num : 0;
}
$num++;
$wohneinheit_data = [
'extref' => $wohneinheit_extref,
'hausnummer_id' => $hausnummer->id,
'num' => $num,
'zusatz' => ($zusatz) ? $zusatz : null
];
$wohneinheit = ADBWohneinheitModel::create($wohneinheit_data);
//continue;
//var_dump($wohneinheit);exit;
$wohneinheit->save();
}
function getLastWohneinheit($hausnummer_id) {
global $db;
$sql = "SELECT * FROM Wohneinheit WHERE hausnummer_id = $hausnummer_id ORDER BY num DESC LIMIT 1";
$res = $db->query($sql);
if($db->num_rows($res)) {
return new ADBWohneinheit($db->fetch_object($res));
}
return false;
}

View File

@@ -14,11 +14,14 @@ require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
$partner_id = 209;
$netzgebiet_id = 32;
$connectionTypes = [
"Einfamilienhaus" => "single-dwelling",
"Einfahmilienhaus" => "single-dwelling",
"Mehrfamilienhaus" => "multi-dwelling",
"Mehrparteienhaus" => "apartment-building",
"Wohneinheit in Mehrparteienhaus" => "apartment",
"Wohnung" => "apartment",
"Geschäft" => "business",
"Gewerbebetrieb" => "business",
];
$preorderTypes = [
"Interessensbekundung" => "interest",
@@ -87,6 +90,7 @@ while($csv = fgetcsv($input, 0)) {
$tuer = $m[1];
}
if(!$connection_count) $connection_count = 1;
if(!$bestelltyp || !$anschlusstyp || !$strasse_name || !$hausnummer_name || !$plz_name || !$ort_name || !$connection_count || (!$kunde_nachname && !$kunde_vorname && !$kunde_firma) || (!$kunde_phone && !$kunde_email)) {
echo "incomplete row $l\n";
@@ -109,11 +113,35 @@ while($csv = fgetcsv($input, 0)) {
// fehler
if($strasse_name == "Dr. Friedrichweg") $strasse_name = "Dr. Friedrich Weg";
if($strasse_name == "Dir Triebel-Weg") ($strasse_name = "Dir. Triebel-Weg");
if($strasse_name == "Dir. Triebel Weg") $strasse_name = "Dir. Triebel-Weg";
if($strasse_name == "Dir Triebel-Weg") $strasse_name = "Dir. Triebel-Weg";
if($strasse_name == "Dir. Triebl-Weg") $strasse_name = "Dir. Triebel-Weg";
if($strasse_name == "Radlpasstraße") $strasse_name = "Radlpaßstraße";
if($strasse_name == "St. Stefan") $strasse_name = "St. Stefan ob Stainz";
if($strasse_name == "Pirkhof" && $hausnummer_name == "81 + 81a") {
$hausnummer_name = "81";
}
if($strasse_name == "St. Stefan ob Stainz" && $hausnummer_name == "15 R/C") {
$hausnummer_name = "15";
$unit_string = "R/C";
}
if($strasse_name == "St. Stefan ob Stainz" && $hausnummer_name == "19/SR2") {
$hausnummer_name = "19";
$unit_string = "SR2";
}
if($strasse_name == "Rumpfweg" && $unit_string == "Tür 1, 3 u. 4") {
$connection_count = 3;
}
if(($strasse_name." ".$hausnummer_name == "St. Stefan ob Stainz 15")
|| ($strasse_name." ".$hausnummer_name == "Rumpfweg 2")
|| ($strasse_name." ".$hausnummer_name == "Sommerweg 5")
|| ($strasse_name." ".$hausnummer_name == "Sommerweg 4")
) {
echo "Ignoring $strasse_name $hausnummer_name\n";
continue;
}
$strasse_name = $db->escape($strasse_name);
$hausnummer_name = $db->escape($hausnummer_name);
@@ -150,11 +178,10 @@ while($csv = fgetcsv($input, 0)) {
$res = $adb->query($sql);
if(!$adb->num_rows($res)) {
if(preg_match('/^(schilcherland.+|Neuberg|Kastaniensiedlung|rosenhof|am kluggrund)$/i', $strasse_name)) continue;
echo "Adresse '$strasse_name $hausnummer_name' nicht gefunden!\n";
if(preg_match('/^(schilcherland.+|Neuberg|Kastaniensiedlung|rosenhof|am kluggrund|Reicherfeldweg)$/i', $strasse_name)) continue;
//echo "Adresse '$strasse_name $hausnummer_name' nicht gefunden!\n";
continue;
}
continue;
$data = $adb->fetch_object($res);
@@ -166,7 +193,7 @@ while($csv = fgetcsv($input, 0)) {
continue;
}
$network = NetworkModel::getFirst(["adb_netzgebiet_id" => $netzgebiet_id]);
$network = NetworkModel::getFirst(["adb_network_id" => $netzgebiet_id]);
if(!$network) {
echo "thetool Netzgebiet nicht gefunden (adb netzgebiet id $netzgebiet_id)\n";
continue;
@@ -189,12 +216,13 @@ while($csv = fgetcsv($input, 0)) {
continue;
}
$product_search = ['external_id' => $partner_id,
'attributename' => "presales",
'attributevalue' => ($preorderTypes[$bestelltyp] == "order") ? "activation" : $preorderTypes[$bestelltyp]
];
$product = ProductModel::getFirst($product_search);
if(!$product) {
echo "Kein product gefunden: $bestelltyp\n";
continue;
@@ -244,15 +272,13 @@ while($csv = fgetcsv($input, 0)) {
if($connection_count == 1) {
if($unit_count === 1) {
continue;
$unit = $wohneinheiten[0];
// check if wohneinheit in existing preorder
if(PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id])) {
//echo "1 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n";
echo "1 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n";
continue;
}
@@ -339,8 +365,6 @@ while($csv = fgetcsv($input, 0)) {
continue;
}
}
} elseif($connection_count > 1) {
if($unit_count < $connection_count) {
/*$mu = [];
@@ -350,7 +374,7 @@ while($csv = fgetcsv($input, 0)) {
echo "$strasse_name $hausnummer_name: Nicht genug Wohneinheiten ".count($wohneinheiten)." - need ".$connection_count."\n";
continue;
}
//continue;
$available_units = [];
@@ -361,7 +385,7 @@ while($csv = fgetcsv($input, 0)) {
}
}
}
if($connection_count > count($available_units)) {
// this usually means this order was created already
/*$md = [];
@@ -376,11 +400,48 @@ while($csv = fgetcsv($input, 0)) {
continue;
}
//continue;
$topnumbers = [];
if(preg_match('/(?:tür|top)\s+\d/i', $unit_string)) {
$topnumbers_string = preg_replace('/(tür|top)/i', "", $unit_string);
$topnumbers_string = preg_replace('/\s*u\.?/i', ",", $topnumbers_string);
foreach(explode(",", $topnumbers_string) as $topnumraw) {
$topnumbers[] = intval($topnumraw);
}
if(count($topnumbers) < $connection_count) {
echo "$strasse_name $hausnummer_name: Nicht genug Topnummern für $connection_count Anschlüsse\n";
continue;
}
}
//continue;
// create new Preorders with available units
// then set original Preorder deleted
echo "Creating $connection_count new preorders\n";
for($i = 0; $i < $connection_count; $i++) {
$unit = $available_units[$i];
$unit_top_number = false;
if(count($topnumbers)) {
//echo "$strasse_name $hausnummer_name: Looking for Unit Top $topnumbers[$i]\n";
foreach($available_units as $topnumUnit) {
if($topnumUnit->tuer == $topnumbers[$i]) {
$unit = $topnumUnit;
}
}
if(!$unit) {
echo "$strasse_name $hausnummer_name: Unit mit Topnummer ".$topnumbers[$i]." nicht gefunden.\n";
continue;
}
//var_dump($unit);
$unit_top_number = $topnumbers[$i];
} else {
$unit = $available_units[$i];
}
//continue;
if(PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id])) {
//echo "3 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n";