Filter and pagination is still set after saving Order

This commit is contained in:
Frank Schubert
2022-05-31 15:38:48 +02:00
parent b0fe713d0d
commit 4d4bf81e2a
7 changed files with 121 additions and 49 deletions

View File

@@ -112,7 +112,7 @@ class OrderController extends mfBaseController {
}
}
if(!$showLonelies) {
//if(!$showLonelies) {
//var_dump($order_search);exit;
$pagination['maxItems'] = OrderModel::count($order_search);
foreach(OrderModel::search($order_search, $pagination) as $order) {
@@ -120,9 +120,17 @@ class OrderController extends mfBaseController {
$orders[$order->id] = $order;
}
}
//}
$showLoneliesCount = false;
foreach(["owner", "owner_address", "partner_number", "finish_date"] as $key) {
if(array_key_exists($key, $filter) && $filter[$key]) {
$showLoneliesCount = true;
break;
}
}
if($showLonelies) {
if($showLonelies || $showLoneliesCount) {
$userIds = $this->me->getAddressOrParent()->getUserIds();
//var_dump($userIds);exit;
if(!array_key_exists("network_linked_status", $order_search)) {
@@ -265,10 +273,13 @@ class OrderController extends mfBaseController {
}
protected function addAction() {
//var_dump($this->request->filter);exit;
// TODO: filter by network permissions
$this->layout()->setTemplate("Order/Form");
if($this->me->is("Admin")) {
$this->layout()->set("addresses", AddressModel::search(['parents_only' => 1]));
//$this->layout()->set("addresses", AddressModel::search(['parents_only' => 1]));
$this->layout()->set("products", ProductModel::getAll());
$this->layout()->set("terminations", TerminationModel::getAll());
} else {
@@ -280,17 +291,18 @@ class OrderController extends mfBaseController {
$users = [];
foreach($this->me->my_networks as $network) {
$network_ids[] = $network->id;
$tmp_users = $network->getAddressUsersByAddresstype("salespartner");
/*$tmp_users = $network->getAddressUsersByAddresstype("salespartner");
foreach($tmp_users as $user) {
if(!in_array($user->id, $users)) {
$users[] = $user->id;
}
}
}*/
}
/*
// get addresses from salespartner address' user ids
$addresses = AddressModel::search(["create_by" => $users]);
$this->layout()->set("addresses", $addresses);
*/
// get terminations in my networks
$terms = TerminationModel::search(["network_id" => $network_ids]);
$this->layout()->set("terminations", $terms);
@@ -305,6 +317,15 @@ class OrderController extends mfBaseController {
}
if($this->request->filter) {
$this->layout()->set("filter", $this->request->filter);
}
if($this->request->noTermProducts) {
$this->layout()->set("noTermProducts", $this->request->noTermProducts);
}
if($this->request->s) {
$this->layout()->set("s", $this->request->s);
}
}
@@ -366,18 +387,12 @@ class OrderController extends mfBaseController {
$this->layout()->setFlash("Bestellung nicht gefunden", "error");
$this->redirect("Order");
}
// refuse to save if there is a contract already
if($order->finish_date && is_array($order->contracts) && count($order->contracts)) {
$this->layout()->setFlash("Bestellung kann nicht mehr bearbeitet werden, da sie bereits abgeschlossen und in Verrechnung ist.", "error");
$this->redirect("Order", "edit", ['id' => $order->id]);
}
/*foreach($order->products as $p) {
if($p->contract && $p->contract->id) {
$this->layout()->setFlash("Bestellung kann nicht mehr bearbeitet werden, da sie bereits abgeschlossen und in Verrechnung ist.", "error");
$this->redirect("Order", "edit", ['id' => $order->id]);
}
}*/
} else {
$id = false;
$mode = "add";
@@ -385,12 +400,6 @@ class OrderController extends mfBaseController {
// validate owner
$owner = false;
/*if(!$r->owner_id) {
$this->layout()->setFlash("Bitte Vertragsinhaber auswählen oder eintragen.", "error");
$this->layout()->set("order", $r);
return $this->add();
}*/
$owner_new = false;
if(is_numeric($r->owner_id) && $r->owner_id > 0) {
@@ -415,11 +424,7 @@ class OrderController extends mfBaseController {
return $this->add();
}
}
}/* else {
$this->layout()->setFlash("Ungültiger Vertragsinhaber.");
$this->layout()->set("order", $r);
return $this->add();
}*/
}
// validate billindaddress
@@ -456,11 +461,7 @@ class OrderController extends mfBaseController {
return $this->add();
}
}
} /*else {
$this->layout()->setFlash("Ungültiger Rechnungsempfänger.");
$this->layout()->set("order", $r);
return $this->add();
}*/
}
// validate sepa
if(!$r->billing_type) {
@@ -873,8 +874,23 @@ class OrderController extends mfBaseController {
}
}
$sq = "";
$query = [];
if($r->s) {
$query['s'] = $r->s;
}
if($r->noTermProducts) {
$query["noTermProducts"] = $r->noTermProducts;
}
if($r->filter) {
$query["filter"] = $r->filter;
}
$qs = http_build_query($query);
$this->layout()->setFlash("Bestellung erfolgreich gespeichert.", "success");
$this->redirect("Order", "edit", ["id" => $new_id]);
$this->redirect("Order", "Index", $qs, "order=$new_id-details");
}