ADB Rimo Impot: Added creation of Sbidi Preorders
This commit is contained in:
@@ -110,9 +110,96 @@ class PreorderModel
|
||||
}
|
||||
|
||||
|
||||
public function createFromRimoWorkorder($workorder)
|
||||
public static function createFromRimoWorkorder($workorder)
|
||||
{
|
||||
if(!is_object($workorder)) return false;
|
||||
|
||||
$log = mfLoghandler::singleton();
|
||||
|
||||
$wo_home_external_id = $workorder->adb_wohneinheit->extref;
|
||||
$rimo_workorder_id = $workorder->rimo_id;
|
||||
|
||||
if(!$wo_home_external_id || !$rimo_workorder_id) {
|
||||
$log->warn(__METHOD__.": Missing external_id or workorder_id for workorder: ".$workorder->id);
|
||||
return false;
|
||||
}
|
||||
|
||||
$home = \ADBWohneinheitModel::getFirst(["extref" => $wo_home_external_id]);
|
||||
if(!$home) {
|
||||
$log->warn(__METHOD__.": No home found with external_id: ".$wo_home_external_id);
|
||||
return false;
|
||||
}
|
||||
|
||||
$sbidi_order = SbidiOrder::getFirst(["workorder_rimo_id" => $rimo_workorder_id]);
|
||||
if(!$sbidi_order) return false;
|
||||
|
||||
$network = \NetworkModel::getFirst(["adb_netzgebiet_id" => $home->hausnummer->netzgebiet_id]);
|
||||
if(!$network) {
|
||||
$log->warn(__METHOD__.": No network found for home: ".$home->id. " building: ".$home->hausnummer_id);
|
||||
return false;
|
||||
}
|
||||
|
||||
$campaign = PreordercampaignModel::getFirst(["network_id" => $network->id]);
|
||||
if(!$campaign) {
|
||||
$log->warn(__METHOD__.": No campaign found for network: ".$network->id);
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
$order_date = new DateTime($sbidi_order->order_date);
|
||||
$order_date->setTimezone(new DateTimeZone("Europe/Vienna"));
|
||||
} catch(Exception $e) {
|
||||
$log->error(__METHOD__.": Error parsing order_date in ".$sbidi_order->workorder_rimo_id." : ".$e->getMessage());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$preorder = self::create([
|
||||
"preordercampaign_id" => $campaign->id,
|
||||
"adb_hausnummer_id" => $home->hausnummer_id,
|
||||
"adb_wohneinheit_id" => $home->id,
|
||||
"extref" => $sbidi_order->order_name,
|
||||
"connection_type" => ($sbidi_order->building_type == "md") ? "multi-dwelling" : "single-dwelling",
|
||||
"type" => "provision",
|
||||
"accept_agb" => 1,
|
||||
"accept_dsgvo" => 1,
|
||||
"accept_marketing" => 1,
|
||||
"accept_withdrawal" => 1,
|
||||
"accept_digging" => 1,
|
||||
"contact_type" => "owner",
|
||||
"uid" => $sbidi_order->uid,
|
||||
"firstname" => $sbidi_order->firstname ?: "",
|
||||
"lastname" => $sbidi_order->lastname ?: "",
|
||||
"street" => $sbidi_order->address ?: "",
|
||||
"zip" => $sbidi_order->zip ?: "",
|
||||
"city" => $sbidi_order->city ?: "",
|
||||
"phone" => $sbidi_order->phone ?: "",
|
||||
"email" => $sbidi_order->email ?: "",
|
||||
"submit_type" => "import",
|
||||
"order_date" => $order_date->getTimestamp(),
|
||||
]);
|
||||
$preorder->createUcode();
|
||||
|
||||
$new_status = false;
|
||||
if($preorder->adb_wohneinheit_id) {
|
||||
$new_status = PreorderstatusModel::getFirst(["code" => $preorder->adb_wohneinheit->status->code]);
|
||||
if($preorder->adb_hausnummer->status->code > $preorder->adb_wohneinheit->status->code) {
|
||||
$new_status = PreorderstatusModel::getFirst(["code" => $preorder->adb_hausnummer->status->code]);
|
||||
}
|
||||
} elseif($preorder->adb_hausnummer_id) {
|
||||
$new_status = PreorderstatusModel::getFirst(["code" => $preorder->adb_hausnummer->status->code]);
|
||||
}
|
||||
if($new_status) {
|
||||
$preorder->status_id = $new_status->id;
|
||||
} else {
|
||||
$preorder->status_id = 1;
|
||||
}
|
||||
|
||||
if(!$preorder->save()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $preorder;
|
||||
}
|
||||
|
||||
public static function getAll()
|
||||
|
||||
Reference in New Issue
Block a user