diff --git a/Layout/default/Contract/Form.php b/Layout/default/Contract/Form.php
index 9b9a60996..d7219b92a 100644
--- a/Layout/default/Contract/Form.php
+++ b/Layout/default/Contract/Form.php
@@ -189,7 +189,7 @@
-
+
order_date) : ""?>">
diff --git a/Layout/default/Contract/ProductchangeForm.php b/Layout/default/Contract/ProductchangeForm.php
index 2b3b7e5a4..c21563a7b 100644
--- a/Layout/default/Contract/ProductchangeForm.php
+++ b/Layout/default/Contract/ProductchangeForm.php
@@ -1,6 +1,11 @@
is("Admin")) {
+ $hide_credit = false;
+}
+
?>
diff --git a/Layout/default/Contract/include/productchange-action.php b/Layout/default/Contract/include/productchange-action.php
index a93ce9cda..bb35b2f30 100644
--- a/Layout/default/Contract/include/productchange-action.php
+++ b/Layout/default/Contract/include/productchange-action.php
@@ -199,8 +199,8 @@
cancel_date && $linkcontract->cancel_date < date('U')) ? "" : "checked='checked'"?>
+ name="links[=$link->id?>][action]" value="keep"
+ =($linkcontract->cancel_date && $linkcontract->cancel_date < date('U')) ? "" : "checked='checked'"?>
onchange="linkActionChange(=$link->id?>)" />
type == "credit"): ?>
(Gutschrift wird neu erstellt)
diff --git a/Layout/default/Order/ProductchangeForm.php b/Layout/default/Order/ProductchangeForm.php
index b3673bebc..ad90d0b74 100644
--- a/Layout/default/Order/ProductchangeForm.php
+++ b/Layout/default/Order/ProductchangeForm.php
@@ -1,6 +1,10 @@
is("Admin")) {
+ $hide_credit = false;
+}
?>
diff --git a/application/Contract/Contract.php b/application/Contract/Contract.php
index 359bbe5a5..18b9b889c 100644
--- a/application/Contract/Contract.php
+++ b/application/Contract/Contract.php
@@ -241,6 +241,17 @@ class Contract extends mfBaseModel {
return false;
}
+ public function countActiveLinks($with_credit = false) {
+ $links = $this->getProperty("links");
+
+ if(is_array($links) && count($links)) {
+ return count($links);
+ }
+
+ return 0;
+
+ }
+
public function generateMatchcode() {
$owner_address = $this->getProperty("owner")->street . ", " . $this->getProperty("owner")->zip . " " . $this->getProperty("owner")->city;
diff --git a/application/Contract/ContractController.php b/application/Contract/ContractController.php
index 2972d3c28..2ce35032c 100644
--- a/application/Contract/ContractController.php
+++ b/application/Contract/ContractController.php
@@ -429,6 +429,21 @@ class ContractController extends mfBaseController
$contract_data['termination_id'] = null;
}
+ //var_dump($r->links);
+ // lookup credit contract and if it's missing in $r->links
+ if(!$this->me->is("Admin")) {
+ $credit_link = ContractLinkModel::includesContractId($contract->id, ["type" => "credit"]);
+ if($credit_link) {
+ if(is_array($r->links) && !array_key_exists($credit_link->id, $r->links)) {
+ $r->links[$credit_link->id] = [];
+ }
+ $r->links[$credit_link->id]["action"] = "keep";
+
+ }
+ }
+
+ //var_dump($r->links);exit;
+
$new_contract->update($contract_data);
$new_contract_id = $new_contract->save();
@@ -455,6 +470,8 @@ class ContractController extends mfBaseController
]);
$journal->save();
+
+
if (is_array($r->links) && count($r->links)) {
foreach ($r->links as $link_id => $link_data) {
$action = $link_data["action"];
@@ -597,7 +614,7 @@ class ContractController extends mfBaseController
$this->layout()->setFlash("Produktwechsel erfolgreich erstellt", "success");
if($f == "o") {
- $this->redirect("Order");
+ $this->redirect("Order","Upgrades");
} else {
$this->redirect("Contract", "view", ["contract_id" => $new_contract_id]);
}
diff --git a/application/ContractLink/ContractLinkModel.php b/application/ContractLink/ContractLinkModel.php
index a2344459f..18063ea3c 100644
--- a/application/ContractLink/ContractLinkModel.php
+++ b/application/ContractLink/ContractLinkModel.php
@@ -100,7 +100,7 @@ class ContractLinkModel {
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM ContractLink
LEFT JOIN Contract ON (ContractLink.contract_id = Contract.id)
- LEFT JOIN Address AS Owner ON (Contract.owner_id = Owner.id)
+ LEFT JOIN Address ON (Contract.owner_id = Address.id)
LEFT JOIN Worker ON (ContractLink.create_by = Worker.id)
LEFT JOIN OrderProduct ON (Contract.orderproduct_id = OrderProduct.id)
LEFT JOIN `Order` ON (OrderProduct.order_id = `Order`.id)
@@ -123,7 +123,7 @@ class ContractLinkModel {
$where = self::getSqlFilter($filter);
$sql = "SELECT ContractLink.* FROM ContractLink
LEFT JOIN Contract ON (ContractLink.contract_id = Contract.id)
- LEFT JOIN Address AS Owner ON (Contract.owner_id = Owner.id)
+ LEFT JOIN Address ON (Contract.owner_id = Address.id)
LEFT JOIN Worker ON (ContractLink.create_by = Worker.id)
LEFT JOIN OrderProduct ON (Contract.orderproduct_id = OrderProduct.id)
LEFT JOIN `Order` ON (OrderProduct.order_id = `Order`.id)
@@ -230,6 +230,84 @@ class ContractLinkModel {
}
}
+ if(array_key_exists("owner_id", $filter)) {
+ $owner_id = $filter['owner_id'];
+ if(is_numeric($owner_id)) {
+ $where .= " AND Contract.owner_id=$owner_id";
+ }
+ }
+
+ if(array_key_exists("billingaddress_id", $filter)) {
+ $billingaddress_id = $filter['billingaddress_id'];
+ if(is_numeric($billingaddress_id)) {
+ $where .= " AND Contract.billingaddress_id=$billingaddress_id";
+ }
+ }
+
+ if(array_key_exists("product_id", $filter)) {
+ $product_id = $filter['product_id'];
+ if(is_numeric($product_id)) {
+ $where .= " AND Contract.product_id=$product_id";
+ }
+ }
+
+ if(array_key_exists("orderproduct_id", $filter)) {
+ $orderproduct_id = $filter['orderproduct_id'];
+ if(is_numeric($orderproduct_id)) {
+ $where .= " AND Contract.orderproduct_id=$orderproduct_id";
+ }
+ }
+
+ if(array_key_exists("product_name", $filter)) {
+ $product_name = $db->escape($filter['product_name']);
+ if($product_name) {
+ $where .= " AND (Contract.`product_name` like '%$product_name%' OR Product.name like '%$product_name%')";
+ }
+ }
+
+
+ if(array_key_exists("matchcode", $filter)) {
+ $matchcode = $db->escape($filter['matchcode']);
+ if($matchcode) {
+ $where .= " AND Contract.`matchcode` like '%$matchcode%'";
+ }
+ }
+
+ if(array_key_exists("rtr_code", $filter)) {
+ $rtr_code = $filter['rtr_code'];
+ if(is_numeric($rtr_code)) {
+ $where .= " AND Contract.rtr_code=$rtr_code";
+ }
+ }
+
+ if(array_key_exists("customer_number", $filter)) {
+ $customer_number = $filter['customer_number'];
+ if(is_numeric($customer_number)) {
+ $where .= " AND Address.customer_number=$customer_number";
+ }
+ }
+
+ if(array_key_exists("owner", $filter)) {
+ $owner = FronkDB::singleton()->escape($filter["owner"]);
+ if($owner) {
+ $where .= " AND (Address.customer_number like '$owner' OR Address.company like '%$owner%' OR (CONCAT(Address.firstname, ' ', Address.lastname) like '%$owner%' OR CONCAT(Address.lastname, ' ', Address.firstname) like '%$owner%' ))";
+ }
+ }
+
+ if(array_key_exists("imported_from", $filter)) {
+ $imported_from = FronkDB::singleton()->escape($filter["imported_from"]);
+ if($imported_from) {
+ $where .= " AND Contract.imported_from like '$imported_from'";
+ }
+ }
+
+ if(array_key_exists("imported_data", $filter)) {
+ $imported_data = FronkDB::singleton()->escape($filter["imported_data"]);
+ if($imported_data) {
+ $where .= " AND Contract.imported_data like '$imported_data'";
+ }
+ }
+
if(array_key_exists("price<", $filter)) {
$price = $filter['price<'];
if(is_numeric($price)) {
@@ -256,6 +334,13 @@ class ContractLinkModel {
}
}
+ if(array_key_exists("billing_period", $filter)) {
+ $billing_period = $filter['billing_period'];
+ if(is_numeric($billing_period)) {
+ $where .= " AND Contract.billing_period=$billing_period";
+ }
+ }
+
if(array_key_exists("finish_date", $filter)) {
$finish_date = $filter['finish_date'];
if(is_numeric($finish_date)) {
@@ -270,13 +355,6 @@ class ContractLinkModel {
}
}
- if(array_key_exists("finish_date_null_or_gte", $filter)) {
- $finish_date = $filter['finish_date_null_or_gte'];
- if(is_numeric($finish_date)) {
- $where .= " AND (Contract.finish_date IS NULL OR Contract.finish_date >= $finish_date)";
- }
- }
-
if(array_key_exists("finish_date<", $filter)) {
$finish_date = $filter['finish_date<'];
if(is_numeric($finish_date)) {
@@ -284,10 +362,17 @@ class ContractLinkModel {
}
}
+ if(array_key_exists("finish_date_null_or_gte", $filter)) {
+ $cancel_date = $filter['finish_date_null_or_gte'];
+ if(is_numeric($cancel_date)) {
+ $where .= " AND (Contract.finish_date IS NULL OR Contract.finish_date >= $cancel_date)";
+ }
+ }
+
if(array_key_exists("finish_date_null_or_lte", $filter)) {
- $finish_date = $filter['finish_date_null_or_lte'];
- if(is_numeric($finish_date)) {
- $where .= " AND (Contract.finish_date IS NULL OR Contract.finish_date <= $finish_date)";
+ $cancel_date = $filter['finish_date_null_or_lte'];
+ if(is_numeric($cancel_date)) {
+ $where .= " AND (Contract.finish_date IS NULL OR Contract.finish_date <= $cancel_date)";
}
}
diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php
index 45eff9cfb..870f90dc3 100644
--- a/application/Order/OrderController.php
+++ b/application/Order/OrderController.php
@@ -479,13 +479,14 @@ class OrderController extends mfBaseController {
$pagination['start'] = intval($this->request->s);
}
- $upgrade_search = [
- "type" => "upgrade",
- "contract_creator_address_id" => $this->me->address_id,
- "finish_date_null_or_gte" => date("U"),
- "price>=" => 0
- ];
+ unset($filter["finish_date"]);
+ $upgrade_search = $filter;
+
+ $upgrade_search["type"] = "upgrade";
+ $upgrade_search["contract_creator_address_id"] = $this->me->address_id;
+ $upgrade_search["finish_date_null_or_gte"] = date("U");
+ $upgrade_search["price>="] = 0;
$pagination["maxItems"] = ContractLinkModel::countWithContracts($upgrade_search);
diff --git a/application/Order/OrderModel.php b/application/Order/OrderModel.php
index 48527d8f2..97e0067ad 100644
--- a/application/Order/OrderModel.php
+++ b/application/Order/OrderModel.php
@@ -244,7 +244,7 @@ class OrderModel {
if(array_key_exists("owner", $filter)) {
$owner = FronkDB::singleton()->escape($filter['owner']);
if($owner) {
- $where .= " AND (Address.company like '%$owner%' OR Address.firstname like '%$owner%' OR Address.lastname like '%$owner%' OR Address.customer_number like '%$owner%')";
+ $where .= " AND (Address.customer_number like '$owner' OR Address.company like '%$owner%' OR Address.firstname like '%$owner%' OR Address.lastname like '%$owner%' OR Address.customer_number like '%$owner%')";
}
}
|