WIP ADBWohneinheit afterSave Satus check

This commit is contained in:
Frank Schubert
2024-07-18 16:38:51 +02:00
parent 724e2eccee
commit bb81f592b9
2 changed files with 66 additions and 1 deletions

View File

@@ -14,6 +14,22 @@ class ADBWohneinheit extends mfBaseModel {
protected function afterSave() {
if(!$this->id) return true;
if(!$this->hausnummer_id) return true;
// prevent potential infinite loop
$nesting_level = mfValuecache::singleton()->get("adbwohneinheit-save-nesting-level-".$this->id);
if(!$nesting_level) {
$nesting_level = 1;
} else {
$nesting_level++;
}
mfValuecache::singleton()->set("dbwohneinheit-save-nesting-level-".$this->id, $nesting_level);
if($nesting_level > 1) {
return true;
}
// Statuschange from Rimo statuschange
$this->setStatusFromRimo();
// ADBWohneinheit_onSave_noAutoUnitCount can be defined if doing bulk
// operations where unit count is calculated seperately
@@ -35,6 +51,55 @@ class ADBWohneinheit extends mfBaseModel {
}
}
private function setStatusFromRimo() {
return true; // XXX disabled for now
if(!$this->id) return true;
if(!$this->rimo_id) return true;
if(!$this->hausnummer->netzgebiet->getOption("statuschange")) {
return true;
}
$preorder = PreorderModel::getFirstActive(["adb_wohneinheit_id" => $this->id]);
if(!$preorder) {
return true;
}
$b_ex_state = strtolower($this->hausnummer->rimo_ex_state);
$b_op_state = strtolower($this->hausnummer->rimo_op_state);
$h_ex_state = strtolower($this->rimo_ex_state);
$h_op_state = strtolower($this->rimo_op_state);
$workorder = $this->getProperty("rimo_workorder");
$wo_state = strtolower($workorder->rimo_status);
foreach(TT_PREORDER_RIMO_STATUS_MATRIX as $matrix) {
if($matrix["rbop"] && $matrix["rbop"] != $b_op_state) continue;
if($matrix["rbex"] && $matrix["rbex"] != $b_ex_state) continue;
if($matrix["rhop"] && $matrix["rhop"] != $h_op_state) continue;
if($matrix["rhex"] && $matrix["rhex"] != $h_ex_state) continue;
if($matrix["rwo"] && (!$workorder || $matrix["rwo"] != $wo_state)) continue;
// seems all criteria match => set new status
$preorderstatus = $matrix["p"];
if(!$preorderstatus) continue;
$new_status = PreorderstatusModel::getFirst(["code" => $preorderstatus]);
if(!$new_status) continue;
if($preorderstatus->status->code < $new_status->code) {
$preorder->status_id = $new_status->id;
$preorder->save();
}
}
}
public static function parseHausnummerZusatz($text) {

View File

@@ -16,7 +16,7 @@ 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);
$me = new \User(TT_RIMO_IMPORT_USER_ID);
define("INTERNAL_USER_ID", $me->id);
define("INTERNAL_USER_USERNAME", $me->username);