diff --git a/Layout/default/AddressDB/View.php b/Layout/default/AddressDB/View.php
index 7ad39848b..c173e5bfb 100644
--- a/Layout/default/AddressDB/View.php
+++ b/Layout/default/AddressDB/View.php
@@ -125,7 +125,7 @@
Status |
Beschreibung |
Extref |
- Best. |
+ Best. |
wohneinheiten as $unit): ?>
@@ -143,7 +143,7 @@
| =$unit->status->code?> - =$unit->status->name?> |
=((string)$unit) ? "".(string)$unit."" : ""?> |
=($unit->extref) ? "[".$unit->extref."]" : ""?> |
- =PreorderModel::count(["adb_wohneinheit_id" => $unit->id, "deleted" => 0])?> |
+ =PreorderModel::countActive(["adb_wohneinheit_id" => $unit->id])?> |
diff --git a/application/Api/v1/PreorderApicontroller.php b/application/Api/v1/PreorderApicontroller.php
index deae40682..d5db00a6d 100644
--- a/application/Api/v1/PreorderApicontroller.php
+++ b/application/Api/v1/PreorderApicontroller.php
@@ -153,7 +153,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
$return = [];
- foreach(PreorderModel::search($preorder_search) as $preorder) {
+ foreach(PreorderModel::searchActive($preorder_search) as $preorder) {
$return[] = $preorder->getApiArray();
}
@@ -216,14 +216,14 @@ class PreorderApicontroller extends mfBaseApicontroller {
return mfResponse::NotFound(["message" => "Preorder not found"]);
}
- $preorder = PreorderModel::getFirst(['ucode' => strtoupper($code), 'partner_id' => $this->me->address_id, 'deleted' => 0, ' 800]);
+ $preorder = PreorderModel::getFirst(['ucode' => strtoupper($code), 'partner_id' => $this->me->address_id, 'deleted' => 0]);
if(!$preorder) {
// try oan id
- $preorder = PreorderModel::getFirst(['oaid' => strtolower($code), 'partner_id' => $this->me->address_id, 'deleted' => 0, ' 800]);
+ $preorder = PreorderModel::getFirst(['oaid' => strtolower($code), 'partner_id' => $this->me->address_id, 'deleted' => 0]);
}
if(!$preorder) {
// try as extref
- $preorder = PreorderModel::getFirst(['extref' => $code, 'partner_id' => $this->me->address_id, 'deleted' => 0, ' 800]);
+ $preorder = PreorderModel::getFirst(['extref' => $code, 'partner_id' => $this->me->address_id, 'deleted' => 0]);
}
if(!$preorder) {
return mfResponse::NotFound(["message" => "Preorder not found"]);
@@ -242,17 +242,38 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
}
*/
- if($preorder->deleted || $preorder->cancel_request) {
+ if($preorder->deleted || $preorder->cancel_request || $preorder->status->code >= 899) {
return mfResponse::Forbidden(["message" => "Order already cancelled"]);
}
+ if(array_key_exists("status", $this->get)) {
+ $status_code = $this->get["status"];
+ if($status_code < 899 || $status_code > 999) {
+ return mfResponse::BadRequest(["message" => "Status code out of bounds"]);
+ }
+
+ $status = PreorderstatusModel::getFirst(["code" => $status_code]);
+ if(!$status) {
+ return mfResponse::BadRequest(["message" => "Invalid Status code"]);
+ }
+ } else {
+ //910 - Cancelled (ohne weitere Begründung)
+ $status = PreorderstatusModel::getFirst(["code" => TT_PREORDER_DEFAULT_CANCEL_STATUSCODE]);
+ if(!$status) {
+ return mfResponse::InternalServerError();
+ }
+ }
+
+
+
// set cancel_date and canceller
- $preorder->cancel_request = date('U');
+ /*$preorder->cancel_request = date('U');
$preorder->cancel_request_by = $this->me->id;
$preorder->cancel_approved = $this->me->id;
$preorder->deleted = date('U');
- $preorder->deleted_by = $this->me->id;
- $preorder->status_id = 23; //910 - Cancelled (ohne weitere Begründung)
+ $preorder->deleted_by = $this->me->id;*/
+ $preorder->status_id = $status->id;
+ $preorder->edit_by = $this->me->id;
if(!$preorder->save()) {
return mfResponse::InternalServerError();
}
@@ -569,7 +590,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
$existing_preorder = false;
while($unit = $this->db()->fetch_object($res)) {
// check if there is an existing preorder
- $existing_preorder = PreorderModel::getFirst(['adb_wohneinheit_id' => $unit->wohneinheit_id, 'deleted' => 0]);
+ $existing_preorder = PreorderModel::getFirstActive(['adb_wohneinheit_id' => $unit->wohneinheit_id]);
if(!$existing_preorder) {
break;
}
@@ -589,7 +610,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
*/
if($unit && $unit->wohneinheit_id) {
- $existing_preorder = PreorderModel::getFirst(['adb_wohneinheit_id' => $unit->wohneinheit_id, 'deleted' => 0]);
+ $existing_preorder = PreorderModel::getFirstActive(['adb_wohneinheit_id' => $unit->wohneinheit_id]);
if($existing_preorder) {
if($this->exist_is_error && !$is_additional_order) {
return mfResponse::Forbidden(['message' => "Für diese Wohneinheit liegt bereits eine Bestellung vor"]);
@@ -823,7 +844,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
} else {
// else get available units with no unit data, so we can update it
$exclude_wohneinheit_ids = [];
- $preorders_in_hausnummer = PreorderModel::search(['adb_hausnummer_id' => $address->hausnummer_id, "deleted" => 0]);
+ $preorders_in_hausnummer = PreorderModel::searchActive(['adb_hausnummer_id' => $address->hausnummer_id]);
if(count($preorders_in_hausnummer)) {
foreach($preorders_in_hausnummer as $pih) {
if($pih->adb_wohneinheit_id) {
diff --git a/application/OpenAccessId/OpenAccessId.php b/application/OpenAccessId/OpenAccessId.php
index e185a57cc..8ff44ad52 100644
--- a/application/OpenAccessId/OpenAccessId.php
+++ b/application/OpenAccessId/OpenAccessId.php
@@ -324,7 +324,6 @@ class OpenAccessId extends mfBaseModel {
//var_dump($cat_data);exit;
$cat_data->$key = $value;
$exp_data->$cat = $cat_data;
- var_dump($exp_data);
$this->export_data = json_encode($exp_data);
}
diff --git a/application/Preorder/PreorderController.php b/application/Preorder/PreorderController.php
index a7fc69701..076cdab90 100644
--- a/application/Preorder/PreorderController.php
+++ b/application/Preorder/PreorderController.php
@@ -150,8 +150,8 @@ class PreorderController extends mfBaseController {
$pagination['maxItems'] = PreorderModel::countOrderedAddonservices($filter);
$preorders = PreorderModel::searchOrderedAddonservices($filter, $pagination);
} else {
- $pagination['maxItems'] = PreorderModel::count($filter);
- $preorders = PreorderModel::search($filter, $pagination);
+ $pagination['maxItems'] = PreorderModel::countActive($filter);
+ $preorders = PreorderModel::searchActive($filter, $pagination);
}
$this->layout()->set("pagination", $pagination);
$this->layout()->set("preorders", $preorders);
@@ -161,17 +161,17 @@ class PreorderController extends mfBaseController {
private function getPreparedFilter($filter) {
$new_filter = [];
- if(array_key_exists("show_deleted", $filter)) {
+ /*if(array_key_exists("show_deleted", $filter)) {
if($filter['show_deleted'] == "show") {
$new_filter['deleted'] = null;
} elseif($filter['show_deleted'] == "only") {
$new_filter['deleted'] = 1;
} else {
- $new_filter['deleted'] = 0;
+ $new_filter['deleted'] = null;
}
} else {
- $new_filter['deleted'] = 0;
- }
+ $new_filter['deleted'] = null;
+ }*/
$new_filter['add-where'] = "";
@@ -796,11 +796,11 @@ class PreorderController extends mfBaseController {
$preorder_filter["preordercampaign_id"] = $campaign_ids;
}
- $preorder_filter['layout()->setTemplate("Preorder/export.csv");
$this->layout()->set("res", $res);
@@ -913,7 +913,7 @@ class PreorderController extends mfBaseController {
if(!$filter['preordercampaign_id']) $filter['preordercampaign_id'] = 0;
//var_dump($filter);exit;
- $results = PreorderModel::search($filter);
+ $results = PreorderModel::searchActive($filter);
foreach($results as $preorder) {
//$this->log->debug("building status: ".print_r($building->status,true));
$data = clone($preorder->data);
@@ -1003,11 +1003,12 @@ class PreorderController extends mfBaseController {
}
$preorder->status_id = $status_id;
+ $preorder->edit_by = $this->me->id;
$preorder->save();
$update = [];
- foreach(PreorderModel::search(["deleted" => 0, "adb_hausnummer_id" => $preorder->adb_hausnummer_id]) as $affected_preorder) {
+ foreach(PreorderModel::searchActive(["adb_hausnummer_id" => $preorder->adb_hausnummer_id]) as $affected_preorder) {
$up = [
"id" => $affected_preorder->id,
"sid" => $affected_preorder->status_id,
diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php
index 2f189099b..f63475731 100644
--- a/application/Preorder/PreorderModel.php
+++ b/application/Preorder/PreorderModel.php
@@ -123,6 +123,21 @@ class PreorderModel {
}
+ public static function getFirstActive($filter = [], $order = false) {
+ if(!is_array($filter)) return false;
+
+ if(!array_key_exists("deleted", $filter)) {
+ $filter["deleted"] = null;
+ }
+
+ if( !array_key_exists("status_code", $filter) && !array_key_exists("status_code", $filter)
+ && !array_key_exists("status_id", $filter) && !array_key_exists("status_id", $filter) ) {
+ $filter["status_code", $filter) && !array_key_exists("status_code", $filter)) {
+ $filter["status_code", $filter) && !array_key_exists("status_code", $filter)) {
+ $filter["status_code", $filter) && !array_key_exists("status_code", $filter)
+ && !array_key_exists("status_id", $filter) && !array_key_exists("status_id", $filter) ) {
+ $filter["status_code", $filter) && !array_key_exists("status_code", $filter)
+ && !array_key_exists("status_id", $filter) && !array_key_exists("status_id", $filter) ) {
+ $filter["active_preorders = PreorderModel::search(['preordercampaign_id' => $this->id, 'deleted' => 0]);
+ $this->active_preorders = PreorderModel::searchActive(['preordercampaign_id' => $this->id]);
return $this->active_preorders;
}
diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php
index 430efddf4..f2ece6110 100644
--- a/application/Preordercampaign/PreordercampaignController.php
+++ b/application/Preordercampaign/PreordercampaignController.php
@@ -394,7 +394,7 @@ class PreordercampaignController extends mfBaseController {
}
$this->layout()->set("campaign", $campaign);
- $preorders = PreorderModel::search(["preordercampaign_id" => $id, "add-where" => "AND JSON_LENGTH(addon_services) > 1"]);
+ $preorders = PreorderModel::searchActive(["preordercampaign_id" => $id, "add-where" => "AND JSON_LENGTH(addon_services) > 1"]);
if(!count($preorders)) {
$this->layout->setFlash("Keine Vorbestellungen mit bestellten Dienstleistungen gefunden.");
@@ -495,7 +495,7 @@ class PreordercampaignController extends mfBaseController {
$updated_units = 0;
- foreach(PreorderModel::search(["preordercampaign_id" => $id, 'deleted' => 0]) as $preorder) {
+ foreach(PreorderModel::searchActive(["preordercampaign_id" => $id, 'deleted' => 0]) as $preorder) {
if(!$preorder->adb_wohneinheit_id) continue;
if(!$preorder->oaid) continue;
$unit = $preorder->adb_wohneinheit;
@@ -529,7 +529,7 @@ class PreordercampaignController extends mfBaseController {
$assigned_oaids = 0;
$multiple_unit = 0;
- foreach(PreorderModel::search(["preordercampaign_id" => $id, "oaid" => null, "connection_count" => 1, 'deleted' => 0]) as $preorder) {
+ foreach(PreorderModel::searchActive(["preordercampaign_id" => $id, "oaid" => null, "connection_count" => 1]) as $preorder) {
if($preorder->type == "interest") {
continue;
}
@@ -553,7 +553,7 @@ class PreordercampaignController extends mfBaseController {
continue;
}*/
- $wohneinheit_count = PreorderModel::count(["deleted" => 0, "adb_wohneinheit_id" => $wohneinheit->id]);
+ $wohneinheit_count = PreorderModel::countActive(["adb_wohneinheit_id" => $wohneinheit->id]);
if($wohneinheit_count > 1) {
$this->log->error(__METHOD__.": Wohneinheit ".$wohneinheit->id." is assigned to multiple preorders!");
$multiple_unit++;
@@ -608,7 +608,7 @@ class PreordercampaignController extends mfBaseController {
$workorders_created = 0;
$workorders_failed = 0;
- foreach(PreorderModel::search(["preordercampaign_id" => $id, "rimo_workorder" => false, "connection_count" => 1, 'deleted' => 0]) as $preorder) {
+ foreach(PreorderModel::searchActive(["preordercampaign_id" => $id, "rimo_workorder" => false, "connection_count" => 1]) as $preorder) {
if($preorder->workorder_export_date) {
$this->log->warning(__METHOD__.": workorder_export_date not null");
}
@@ -754,8 +754,7 @@ class PreordercampaignController extends mfBaseController {
$missing_extrefs = 0;
$missing_oaid = 0;
- foreach(PreorderModel::search(["preordercampaign_id" => $id, "connection_count" => 1, 'deleted' => 0]) as $preorder) {
- if($preorder->id != 997) continue;
+ foreach(PreorderModel::searchActive(["preordercampaign_id" => $id, "connection_count" => 1]) as $preorder) {
if($preorder->type == "interest") {
$this->log->debug(__METHOD__.": Ignoring Preorder ".$preorder->id.": is interest");
@@ -818,7 +817,7 @@ class PreordercampaignController extends mfBaseController {
$oaid_updated = 0;
- foreach(PreorderModel::search(["preordercampaign_id" => $id, "connection_count" => 1, 'deleted' => 0]) as $preorder) {
+ foreach(PreorderModel::searchActive(["preordercampaign_id" => $id, "connection_count" => 1]) as $preorder) {
if($preorder->type == "interest") {
$this->log->debug(__METHOD__.": Ignoring Preorder ".$preorder->id.": is interest");
continue;
diff --git a/application/Preorderlogistics/PreorderlogisticsController.php b/application/Preorderlogistics/PreorderlogisticsController.php
index 008fc9e26..08ff92390 100644
--- a/application/Preorderlogistics/PreorderlogisticsController.php
+++ b/application/Preorderlogistics/PreorderlogisticsController.php
@@ -78,6 +78,7 @@ class PreorderlogisticsController extends mfBaseController {
$filter[">status_code"] = 139;
$filter["preorder_filter, true);
$preorder_filter['preordercampaign_id'] = $this->preordercampaign_id;
- $preorder_filter['deleted'] = null;
- $preorders = PreorderModel::search($preorder_filter);
+ $preorders = PreorderModel::searchActive($preorder_filter);
return $preorders;
}
diff --git a/application/Preordernotification/PreordernotificationController.php b/application/Preordernotification/PreordernotificationController.php
index bb67fdcbf..c3934c8e1 100644
--- a/application/Preordernotification/PreordernotificationController.php
+++ b/application/Preordernotification/PreordernotificationController.php
@@ -363,13 +363,12 @@ class PreordernotificationController extends mfBaseController {
// get and save preorder count
$preorder_filter = json_decode($notification->preorder_filter, true);
$preorder_filter['preordercampaign_id'] = $notification->preordercampaign_id;
- $preorder_filter['deleted'] = null;
- $preorder_count = PreorderModel::count($preorder_filter);
+ $preorder_count = PreorderModel::countActive($preorder_filter);
$notification->recipient_count = $preorder_count;
$notification->save();
if($r->send_testmail && $r->testmail_to) {
- $preorder = PreorderModel::getFirst($preorder_filter);
+ $preorder = PreorderModel::getFirstActive($preorder_filter);
if(!$preorder) {
$this->layout()->setFlash("Testmail konnte nicht versendet werden. Keine Empfänger gefunden", "warn");
$this->redirect("Preordernotification", "edit", ['id' => $new_id]);
diff --git a/public/docs/preorder-api.yaml b/public/docs/preorder-api.yaml
index 8b7d8c4f8..69883fe49 100644
--- a/public/docs/preorder-api.yaml
+++ b/public/docs/preorder-api.yaml
@@ -725,6 +725,20 @@ paths:
required: true
schema:
type: string
+ - name: status
+ in: query
+ description: |
+ Kündigungsgund (**Default**: 910)
+
+ | code | text | description |
+ |------|------|-------------|
+ | 899 | Cancelled | Storniert: Keine Leitungsrechte / Genehmigung |
+ | 900 | Cancelled | Storniert: Wirtschaftliche Umstände |
+ | 910 | Cancelled | Storniert: Keine Begründung |
+ | 920 | Cancelled | Gekündigt durch Kunde |
+ | 921 | Cancelled | Gekündigt durch ISP |
+ schema:
+ type: integer
responses:
'200':
description: Successful operation
diff --git a/scripts/preorder/preorders-split-multiple-connections.php b/scripts/preorder/preorders-split-multiple-connections.php
index 23fb58bc1..708097fb9 100755
--- a/scripts/preorder/preorders-split-multiple-connections.php
+++ b/scripts/preorder/preorders-split-multiple-connections.php
@@ -53,7 +53,7 @@ $missing_doors = [];
$total = 0;
$c = 0;
-foreach(PreorderModel::search(["deleted" => 0, "preordercampaign_id" => $selected_campaign, "connection_count" => 2]) as $preorder) {
+foreach(PreorderModel::searchActive(["preordercampaign_id" => $selected_campaign, "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);
diff --git a/scripts/preorder/test-export-preorders-rimo-workorders.php b/scripts/preorder/test-export-preorders-rimo-workorders.php
index 7c42a568e..d4e8dd075 100755
--- a/scripts/preorder/test-export-preorders-rimo-workorders.php
+++ b/scripts/preorder/test-export-preorders-rimo-workorders.php
@@ -30,7 +30,7 @@ $ctx_opts = [
$missing_units = [];
$missing_extrefs = [];
-foreach(PreorderModel::search(["preordercampaign_id" => $campaign_prem_sued]) as $preorder) {
+foreach(PreorderModel::searchActive(["preordercampaign_id" => $campaign_prem_sued]) as $preorder) {
if(in_array($preorder->id, $ignore_preorders)) continue;
if($preorder->workorder_export_date) continue;
diff --git a/scripts/preorder/update-preorder-add-unit.php b/scripts/preorder/update-preorder-add-unit.php
index 959151b67..e6c96f012 100755
--- a/scripts/preorder/update-preorder-add-unit.php
+++ b/scripts/preorder/update-preorder-add-unit.php
@@ -50,7 +50,7 @@ echo "selected campaign: $selected_campaign - ".$argv[1]."\n";
$same_unit_count = 0;
$i = 0;
-foreach(PreorderModel::search(['preordercampaign_id' => $selected_campaign, 'adb_wohneinheit_id' => null, 'connection_count' => 1, "connection_type" => "single-dwelling", "deleted" => 0]) as $preorder) {
+foreach(PreorderModel::searchActive(['preordercampaign_id' => $selected_campaign, 'adb_wohneinheit_id' => null, 'connection_count' => 1, "connection_type" => "single-dwelling"]) as $preorder) {
if(in_array($preorder->id, $ignore_preorders)) continue;
//if($preorder->connection_type != "single-dwelling") continue;