#!/usr/bin/php id); define("INTERNAL_USER_USERNAME", $me->username); $ignore_preorders = []; $campaign_prem_nord = 5; $same_unit_count = 0; $missing_units = []; $missing_doors = []; $total = 0; $c = 0; foreach(PreorderModel::search(["deleted" => 0, "preordercampaign_id" => $campaign_prem_nord, "connection_count" => 2]) as $preorder) { // check if we have enough units with extref $wohneinheiten = ADBWohneinheitModel::search(["hausnummer_id" => $preorder->adb_hausnummer_id]); $unit_count = count($wohneinheiten); if($unit_count < $preorder->connection_count) { $mu = []; $mu['preorder'] = $preorder; $mu['unit_count'] = $unit_count; $missing_units[] = $mu; //echo "Nicht genug Wohneinheiten - Preorder id ".$preorder->id.": ".count($wohneinheiten)." - need ".$preorder->connection_count."\n"; continue; } $available_units = []; foreach($wohneinheiten as $unit) { if(!PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id])) { if($unit->tuer || preg_match('/^Top\s+\d+$/', $unit->zusatz)) { $available_units[] = $unit; } } } if($preorder->connection_count > count($available_units)) { $md = []; $md["unit_count"] = $unit_count; $md["door_count"] = count($available_units); $md["preorder"] = $preorder; $missing_doors[] = $md; //echo "Not enough units with tuer (hausnummer id ".$preorder->adb_hausnummer_id.") units total: ".count($wohneinheiten)."; units with tuer: ".count($available_units)."; preorder connection count: ".$preorder->connection_count."\n"; continue; } // create new Preorders with available units // then set original Preorder deleted echo "Creating ".$preorder->connection_count." new preorders\n"; for($i = 0; $i < $preorder->connection_count; $i++) { if(!$available_units[$i]->oaid) { $available_units[$i]->oaid = $available_units[$i]->getNewOAID(); $available_units[$i]->save(); } $new_preorder = clone($preorder); $new_preorder->ucode = $preorder->ucode.".".($i+1); $new_preorder->connection_count = 1; $new_preorder->adb_wohneinheit_id = $available_units[$i]->id; $new_preorder->oaid = $available_units[$i]->oaid; //var_dump($new_preorder);exit; $new_preorder->save(); } $preorder->deleted = 1; $preorder->delete_reason = "connection_split"; $preorder->save(); $i++; } echo "Adresse;Bestellte Anschlüsse;Vorhandene Wohneinheiten;Vorhanden Wohneinheiten mit Tür/Top Nummer\n"; foreach($missing_units as $mu) { $preorder = $mu['preorder']; /*echo "Adresse: ".$preorder->adb_hausnummer->strasse->name." ".$preorder->adb_hausnummer->hausnummer; echo " | Bestellte Anschlüsse: ".$preorder->connection_count; echo " | Vorhandene Wohneinheiten: ".$mu['unit_count'];*/ echo '"'.$preorder->adb_hausnummer->strasse->name.'";'; echo $preorder->connection_count.';'; echo $mu['unit_count'].';'; echo ';'; echo "\n"; } foreach($missing_doors as $md) { $preorder = $md['preorder']; /*echo "Adresse: ".$preorder->adb_hausnummer->strasse->name." ".$preorder->adb_hausnummer->hausnummer; echo " | Bestellte Anschlüsse: ".$preorder->connection_count; echo " | Vorhandene Wohneinheiten: ".$md['unit_count']; echo " | Vorhandene Tür/Top Nummern: ".$md["door_count"];*/ echo '"'.$preorder->adb_hausnummer->strasse->name.'";'; echo $preorder->connection_count.';'; echo $md["unit_count"].';'; echo $md["door_count"].';'; echo "\n"; } echo "Processed $total, created $c preorders\n";