ADB Rimo Impot: Added creation of Sbidi Preorders
This commit is contained in:
@@ -191,7 +191,11 @@ foreach ($clusters as $cluster_data) {
|
||||
}
|
||||
|
||||
|
||||
$option_create_preorder = false;
|
||||
$preorder_only_oaid = false;
|
||||
$option_import_sbidi_orders = false;
|
||||
$option_import_sbidi_orders = $adb_netzgebiet->getOption("create_preorder");
|
||||
$option_create_preorder = $adb_netzgebiet->getOption("create_preorder");
|
||||
$preorder_only_oaid = $adb_netzgebiet->getOption("preorder_only_oaid");
|
||||
$option_wo_ignore_status = $adb_netzgebiet->getOption("wo_ignore_status");
|
||||
|
||||
@@ -223,20 +227,7 @@ foreach ($clusters as $cluster_data) {
|
||||
|
||||
if (is_object($buildingsResponse) && property_exists($buildingsResponse, "item") && is_array($buildingsResponse->item) && count($buildingsResponse->item)) {
|
||||
foreach ($buildingsResponse->item as $building) {
|
||||
//var_dump($building);
|
||||
/*if($building->buildingType && $building->buildingType->userLabel == "Greenfield") {
|
||||
//echo $building->id.": ignoring Greenfield\n";
|
||||
continue;
|
||||
}*/
|
||||
$hausnummer_count++;
|
||||
//if($hausnummer_count < 300) continue;
|
||||
|
||||
/*
|
||||
// ignore buildings without units
|
||||
if(!$building->plannedTU) {
|
||||
echo $building->id.": no planned TUs\n";
|
||||
continue;
|
||||
}*/
|
||||
|
||||
|
||||
$rimo_building_id = $building->id;
|
||||
@@ -659,8 +650,70 @@ foreach ($clusters as $cluster_data) {
|
||||
}
|
||||
|
||||
/*
|
||||
* get workorders
|
||||
*/
|
||||
* get SBIDI Orders, to create Preorders later
|
||||
*/
|
||||
|
||||
if($option_import_sbidi_orders) {
|
||||
$sbidi_orders_resp = \Sbidi_AnoApi::getOrders($cluster_rimo_id);
|
||||
if(!$sbidi_orders_resp) {
|
||||
echo "Error fetching SBIDI Orders\n";
|
||||
} else {
|
||||
if(!property_exists($sbidi_orders_resp, "orders") || !is_array($sbidi_orders_resp->orders) || !count($sbidi_orders_resp->orders)) {
|
||||
echo "No Orders in SBIDI Orders response\n";
|
||||
} else {
|
||||
foreach($sbidi_orders_resp->orders as $order) {
|
||||
|
||||
if(!is_array($order->homes) || !count($order->homes)) continue;
|
||||
foreach($order->homes as $home) {
|
||||
if(!$home->home_id || !$home->work_order_id) continue;
|
||||
|
||||
$sorder = \SbidiOrder::getFirst(["home_rimo_id" => $home->home_id]);
|
||||
if(!$sorder) {
|
||||
$sorder = \SbidiOrder::getFirst(["workorder_rimo_id" => $home->work_order_id]);
|
||||
}
|
||||
|
||||
if(!$sorder) {
|
||||
// create SbidiOrder
|
||||
$sorder = \SbidiOrder::create([
|
||||
"building_rimo_id" => $order->building_id,
|
||||
"home_rimo_id" => $home->home_id,
|
||||
"workorder_rimo_id" => $home->work_order_id,
|
||||
]);
|
||||
}
|
||||
|
||||
$sorder->update([
|
||||
"uid" => $order->customer->uid,
|
||||
"firstname" => $order->customer->firstname,
|
||||
"lastname" => $order->customer->lastname,
|
||||
"address" => $order->customer->address,
|
||||
"zip" => $order->customer->zip,
|
||||
"city" => $order->customer->city,
|
||||
"country" => $order->customer->country,
|
||||
"email" => $order->customer->email,
|
||||
"phone" => $order->customer->phone,
|
||||
"order_date" => ($order->order_date) ? : null,
|
||||
]);
|
||||
|
||||
$building_type = "sd";
|
||||
foreach($order->lines as $line) {
|
||||
if(strpos("MPH", $line->product_code) !== false) {
|
||||
$building_type = "md";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$sorder->building_type = $building_type;
|
||||
$sorder->save();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* get workorders
|
||||
*/
|
||||
|
||||
$params = $baseParams;
|
||||
$params["clusterId"] = $cluster_rimo_id;
|
||||
@@ -684,11 +737,16 @@ foreach ($clusters as $cluster_data) {
|
||||
if (is_object($workordersResponse) && property_exists($workordersResponse, "item") && is_array($workordersResponse->item) && count($workordersResponse->item)) {
|
||||
foreach ($workordersResponse->item as $workorder) {
|
||||
//$wo_building_external_id = $workorder->location->id;
|
||||
$wo_home_external_id = $workorder->home->id;
|
||||
$wo_home = false;
|
||||
|
||||
$wo_home_external_id = false;
|
||||
if(is_object($workorder->home) && $workorder->home->id) {
|
||||
$wo_home_external_id = $workorder->home->id;
|
||||
}
|
||||
|
||||
$rimo_workorder_id = $workorder->id;
|
||||
$rimo_workorder_name = $workorder->name;
|
||||
$workorder_status = $workorder->state->userLabel;
|
||||
$workorder_home_id = $workorder->home->id;
|
||||
$team_id = (is_array($workorder->teams->item) && count($workorder->teams->item)) ? $workorder->teams->item[0]->id : null;
|
||||
$team_name = (is_array($workorder->teams->item) && count($workorder->teams->item)) ? $workorder->teams->item[0]->name : null;
|
||||
|
||||
@@ -701,7 +759,7 @@ foreach ($clusters as $cluster_data) {
|
||||
$addressErrors[] = "Wohneinheit für Workorder ".$wo->rimo_name." hat sich geändert von ".$wo->adb_wohneinheit_id." auf ".$wo_home->extref." (aber wurde nicht im Tool übernommen)";
|
||||
}
|
||||
} else {
|
||||
$addressErrors[] = "Wohneinheit für Workorder ".$wo->name." ist jetzt leer";
|
||||
$addressErrors[] = "Wohneinheit für Workorder ".$wo->rimo_name." ist jetzt leer";
|
||||
}
|
||||
|
||||
//echo "Updating Workorder $rimo_workorder_id ($workorder_home_id)\n";
|
||||
@@ -720,7 +778,10 @@ foreach ($clusters as $cluster_data) {
|
||||
$wo->save();
|
||||
}
|
||||
} else {
|
||||
$wo_home = \ADBWohneinheitModel::getFirst(["extref" => $workorder_home_id]);
|
||||
if($workorder_status == "Deleted") continue;
|
||||
|
||||
if(!$wo_home_external_id) continue;
|
||||
$wo_home = \ADBWohneinheitModel::getFirst(["extref" => $wo_home_external_id]);
|
||||
|
||||
if (!$wo_home) {
|
||||
//echo "Home zu Workorder $rimo_workorder_id ($workorder_home_id) nicht gefunden\n";
|
||||
@@ -741,7 +802,23 @@ foreach ($clusters as $cluster_data) {
|
||||
"rimo_team_name" => $team_name
|
||||
]);
|
||||
if (!$wo->save()) {
|
||||
echo "Fehler beim Erstellen der RimoWorkorder $rimo_workorder_id ($workorder_home_id)\n";
|
||||
echo "Fehler beim Erstellen der RimoWorkorder $rimo_workorder_id ($wo_home_external_id)\n";
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// create Preorder if requested
|
||||
if($option_create_preorder && $wo_home) {
|
||||
if(\PreorderModel::getFirst(["adb_wohneinheit_id" => $wo_home->id])) {
|
||||
//echo "Preorder already exists for Workorder $rimo_workorder_id ($wo_home_external_id)\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
$preorder = \PreorderModel::createFromRimoWorkorder($wo);
|
||||
if(!$preorder) {
|
||||
echo "Error creating Preorder for Workorder $rimo_workorder_id ($wo_home_external_id)\n";
|
||||
} else {
|
||||
//var_dump($preorder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user