Merge branch 'fronkdev' into 'master'
Rimo Import: Added deletion of Buildings not in Rimo anymore See merge request fronk/thetool!1416
This commit is contained in:
@@ -226,11 +226,14 @@ foreach ($clusters as $cluster_data) {
|
||||
$hausnummer_found_count = 0;
|
||||
$homes_count = 0;
|
||||
|
||||
$rimo_building_list = [];
|
||||
|
||||
if (is_object($buildingsResponse) && property_exists($buildingsResponse, "item") && is_array($buildingsResponse->item) && count($buildingsResponse->item)) {
|
||||
foreach ($buildingsResponse->item as $building) {
|
||||
$hausnummer_count++;
|
||||
|
||||
$rimo_building_id = $building->id;
|
||||
$rimo_building_list[] = $rimo_building_id;
|
||||
|
||||
$hausnummer = $AddressHelper->findUpdateAddressFromRimoBuilding($building);
|
||||
if (!$hausnummer) {
|
||||
@@ -580,35 +583,10 @@ foreach ($clusters as $cluster_data) {
|
||||
|
||||
if($option_delete_units) {
|
||||
// delete Homes not existing in Rimo
|
||||
foreach (\ADBWohneinheitModel::search(["hausnummer_id" => $hausnummer->id]) as $adb_unit) {
|
||||
$adb_unit->rimo_deleted = 1;
|
||||
if(!$adb_unit->extref) {
|
||||
$adb_unit->save(["no_updates" => 1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!in_array($adb_unit->extref, $rimo_home_list)) {
|
||||
if($adb_unit->oaid) {
|
||||
$oaid = \OpenAccessIdModel::getFirstOaid($adb_unit->oaid);
|
||||
$oaid_units_count = \ADBWohneinheitModel::count(["oaid" => $adb_unit->oaid]);
|
||||
if($oaid && $oaid->origin == "ofaa" && $oaid_units_count === 1) {
|
||||
// last unit with this OAID
|
||||
$adb_unit->save(["no_updates" => 1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(count($adb_unit->active_preorders)) {
|
||||
$adb_unit->save(["no_updates" => 1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
echo "[DD] Deleting Hausnummer ".$adb_unit->hausnummer_id." Wohneinheit ".$adb_unit->id." (extref ".$adb_unit->extref.")\n";
|
||||
$addressErrors[] = "[DD] Deleting Hausnummer ".$adb_unit->hausnummer_id." Wohneinheit ".$adb_unit->id." (extref ".$adb_unit->extref.")";
|
||||
|
||||
$adb_unit->delete();
|
||||
|
||||
$delete_strings = deleteHomesIfEligible($rimo_home_list, $hausnummer);
|
||||
if(is_array($delete_strings) && count($delete_strings)) {
|
||||
foreach($delete_strings as $delete_string) {
|
||||
$addressErrors[] = $delete_string;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -686,13 +664,34 @@ foreach ($clusters as $cluster_data) {
|
||||
//var_dump($trenches);exit;
|
||||
$hausnummer->trenches = json_encode($trenches);
|
||||
$hausnummer->save();
|
||||
$hausnummer = new \ADBHausnummer($hausnummer_id);
|
||||
//$hausnummer = new \ADBHausnummer($hausnummer_id);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($option_delete_units) {
|
||||
// Löscht in Rimo nicht (mehr) vorhandene Wohneinheiten, sofern keine Bestellung oder OAID
|
||||
foreach(\ADBHausnummerModel::search(["netzgebiet_id" => $adb_netzgebiet->id]) as $hausnummer) {
|
||||
if(!in_array($hausnummer->rimo_id, $rimo_building_list)) {
|
||||
// delete Homes not existing in Rimo
|
||||
$delete_strings = deleteHomesIfEligible([], $hausnummer);
|
||||
if(is_array($delete_strings) && count($delete_strings)) {
|
||||
foreach($delete_strings as $delete_string) {
|
||||
$addressErrors[] = $delete_string;
|
||||
}
|
||||
}
|
||||
if(!\ADBWohneinheitModel::count(["hausnummer_id" => $hausnummer->id])) {
|
||||
// keine homes mehr übrig, lösche Hausnummer
|
||||
$hausnummer->delete();
|
||||
echo "[DD] Deleting Hausnummer ".$hausnummer->id.", da keine Wohneinheit mehr (extref ".$hausnummer->extref.", rimo_id: ".$hausnummer->rimo_id.")\n";
|
||||
$return_strings[] = "[DD] Deleting Hausnummer ".$hausnummer->id.", da keine Wohneinheit mehr (extref ".$hausnummer->extref.", rimo_id: ".$hausnummer->rimo_id.")";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* get SBIDI Orders, to create Preorders later
|
||||
*/
|
||||
@@ -943,3 +942,41 @@ function getServiceDnValues($dn)
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
function deleteHomesIfEligible(Array $rimo_home_list, Object $hausnummer) {
|
||||
$return_strings = [];
|
||||
foreach (\ADBWohneinheitModel::search(["hausnummer_id" => $hausnummer->id]) as $adb_unit) {
|
||||
$adb_unit->rimo_deleted = 1;
|
||||
/*if(!$adb_unit->extref) {
|
||||
$adb_unit->save(["no_updates" => 1]);
|
||||
continue;
|
||||
}
|
||||
*/ // auskommentiert, um auch homes ohne rimo_id zu löschen
|
||||
|
||||
if(!in_array($adb_unit->extref, $rimo_home_list)) {
|
||||
if($adb_unit->oaid) {
|
||||
$oaid = \OpenAccessIdModel::getFirstOaid($adb_unit->oaid);
|
||||
$oaid_units_count = \ADBWohneinheitModel::count(["oaid" => $adb_unit->oaid]);
|
||||
if($oaid && $oaid->origin == "ofaa" && $oaid_units_count === 1) {
|
||||
// last unit with this OAID
|
||||
$adb_unit->save(["no_updates" => 1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(count($adb_unit->active_preorders)) {
|
||||
// don't delete if there is an active order
|
||||
$adb_unit->save(["no_updates" => 1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
echo "[DD] Deleting Hausnummer ".$adb_unit->hausnummer_id." Wohneinheit ".$adb_unit->id." (extref ".$adb_unit->extref.")\n";
|
||||
$return_strings[] = "[DD] Deleting Hausnummer ".$adb_unit->hausnummer_id." Wohneinheit ".$adb_unit->id." (extref ".$adb_unit->extref.")";
|
||||
|
||||
$adb_unit->delete();
|
||||
|
||||
}
|
||||
}
|
||||
return $return_strings;
|
||||
}
|
||||
Reference in New Issue
Block a user