New Preorder cancelling

This commit is contained in:
Frank Schubert
2024-02-15 20:44:04 +01:00
parent 0d62e07d3e
commit dfa8d7ca1d
14 changed files with 138 additions and 44 deletions
+32 -11
View File
@@ -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, '<status_code' => 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, '<status_code' => 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, '<status_code' => 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) {