$filter, 's' => $s])?>" class="btn btn-secondary mr-1"> Zurück zur Vertragsübersicht
diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php
index 569a6882a..4df6026e9 100644
--- a/Layout/default/Preordercampaign/Form.php
+++ b/Layout/default/Preordercampaign/Form.php
@@ -122,6 +122,7 @@
diff --git a/application/Api/v1/PreorderApicontroller.php b/application/Api/v1/PreorderApicontroller.php
index 92f92ac6c..79e90576e 100644
--- a/application/Api/v1/PreorderApicontroller.php
+++ b/application/Api/v1/PreorderApicontroller.php
@@ -119,7 +119,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
$unit_search[$key] = trim($this->post['address']->$key);
}
}
-
+
/*
* check customer
*/
diff --git a/application/Contract/Contract.php b/application/Contract/Contract.php
index 80a373bcc..221632216 100644
--- a/application/Contract/Contract.php
+++ b/application/Contract/Contract.php
@@ -7,6 +7,9 @@ class Contract extends mfBaseModel {
private $orderproduct;
private $termination;
private $sla;
+ private $contractConfigGroups;
+ private $contractConfigItems;
+ private $configgroups;
private $finisher;
private $canceler;
private $creator;
@@ -65,6 +68,34 @@ class Contract extends mfBaseModel {
return $this->orderproduct;
}
+ if($name == "contractConfigGroups") {
+ $product = $this->getProperty("product");
+ $this->contractConfigGroups = ContractconfigGroupModel::search(['producttech_id' => $product->producttech_id]);
+ return $this->contractConfigGroups;
+ }
+
+ if($name == "configgroups") {
+ $product = $this->getProperty("product");
+ $this->configgroups = [];
+ foreach(ContractconfiggroupProductgroupModel::search(['productgroup_id' => $product->productgroup_id]) as $ccpg) {
+ $ccpg->contractconfiggroup->setContractId($this->id);
+ $this->configgroups[] = $ccpg->contractconfiggroup;
+ }
+ return $this->configgroups;
+ }
+
+ if($name == "contractConfigItems") {
+ $product = $this->getProperty("product");
+
+ $this->contractConfigItems = [];
+ foreach(ProducttechAttributeModel::search(['producttech_id' => $product->producttech_id, "forcontract" => 1]) as $item) {
+ $item->setContractId($this->id);
+ $this->contractConfigItems [] = $item;
+ }
+
+ return $this->contractConfigItems;
+ }
+
if($name == "finisher") {
$this->finisher = mfValuecache::singleton()->get("Worker-id-".$this->finish_date_by);
if($this->finisher === null) {
diff --git a/application/ContractconfigGroup/ContractconfigGroup.php b/application/ContractconfigGroup/ContractconfigGroup.php
index 66e425c03..d8a86a28d 100644
--- a/application/ContractconfigGroup/ContractconfigGroup.php
+++ b/application/ContractconfigGroup/ContractconfigGroup.php
@@ -2,15 +2,34 @@
class ContractconfigGroup extends mfBaseModel {
private $items;
- private $value;
+ private $contract_id;
+ public function setContractId($contract_id) {
+ if(!is_numeric($contract_id)) {
+ return false;
+ }
+ $this->contract_id = $contract_id;
+ return true;
+ }
public function getProperty($name) {
if($this->$name == null) {
- if($name == "items") {
+ /*if($name == "items") {
$this->items = ContractconfigItemModel::search(['group_id' => $this->id]);
return $this->items;
+ }*/
+
+ if($name == "items") {
+ if($this->contract_id) {
+ foreach(ContractconfigItemModel::search(['contractconfiggroup_id' => $this->id]) as $item) {
+ $item->setContractId($this->contract_id);
+ $this->items[] = $item;
+ }
+ } else {
+ $this->items = ContractconfigItemModel::search(['contractconfiggroup_id' => $this->id]);
+ }
+ return $this->items;
}
$classname = ucfirst($name);
diff --git a/application/ContractconfigGroup/ContractconfigGroupModel.php b/application/ContractconfigGroup/ContractconfigGroupModel.php
index 220b38ac3..9579433ac 100644
--- a/application/ContractconfigGroup/ContractconfigGroupModel.php
+++ b/application/ContractconfigGroup/ContractconfigGroupModel.php
@@ -73,7 +73,14 @@ class ContractconfigGroupModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
- $res = $db->select("ContractconfigGroup", "*", "$where ORDER BY name, filename");
+ $sql = "SELECT ContractconfigGroup.* FROM ContractconfigGroup
+ LEFT JOIN ContractconfiggroupProducttech ON (ContractconfigGroup.id = ContractconfiggroupProducttech.contractconfiggroup_id)
+ WHERE $where
+ ORDER BY ContractconfigGroup.id, producttech_id, `create`
+ ";
+ mfLoghandler::singleton()->debug($sql);
+ $res = $db->query($sql);
+ //$res = $db->select("ContractconfigGroup", "*", "$where ORDER BY name, `create`");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ContractconfigGroup($data);
@@ -89,17 +96,20 @@ class ContractconfigGroupModel {
if(array_key_exists("name", $filter)) {
$name = FronkDB::singleton()->escape($filter['name']);
if($name) {
- $where .= " AND name='$name'";
+ $where .= " AND ContractconfigGroup.name='$name'";
}
}
- if(array_key_exists("filename", $filter)) {
- $filename = FronkDB::singleton()->escape($filter['filename']);
- if($filename) {
- $where .= " AND filename='$filename'";
+ if(array_key_exists("producttech_id", $filter)) {
+ $producttech_id = $filter['producttech_id'];
+ if(is_numeric($producttech_id)) {
+ $where .= " AND producttech_id=$producttech_id";
+ } elseif(is_array($producttech_id) && count($producttech_id)) {
+ $where .= " AND producttech_id IN (". implode(",", $producttech_id).")";
}
}
+
if(array_key_exists("subfolder", $filter)) {
$subfolder = FronkDB::singleton()->escape($filter['subfolder']);
if($subfolder) {
diff --git a/application/ContractconfigItem/ContractconfigItem.php b/application/ContractconfigItem/ContractconfigItem.php
index e6fb43949..71dc66e83 100644
--- a/application/ContractconfigItem/ContractconfigItem.php
+++ b/application/ContractconfigItem/ContractconfigItem.php
@@ -1,5 +1,39 @@
contract_id = $contract_id;
+ return true;
+ }
+
+ public function getProperty($name) {
+ if($this->$name == null) {
+
+ if($name == "value") {
+ if(!$this->contract_id) {
+ return null;
+ }
+ $this->value = ContractconfigValueModel::getFirst(['item_id' => $this->id, "contract_id" => $this->contract_id]);
+ return $this->value;
+ }
+
+ $classname = ucfirst($name);
+ $idfield = $name."_id";
+ $this->$name = new $classname($this->$idfield);
+
+ if($this->$name->id) {
+ return $this->$name;
+ } else {
+ return null;
+ }
+ }
+
+ return $this->$name;
+ }
}
\ No newline at end of file
diff --git a/application/ContractconfigItem/ContractconfigItemModel.php b/application/ContractconfigItem/ContractconfigItemModel.php
index 7533d5929..384d21588 100644
--- a/application/ContractconfigItem/ContractconfigItemModel.php
+++ b/application/ContractconfigItem/ContractconfigItemModel.php
@@ -100,6 +100,13 @@ class ContractconfigItemModel {
}
}
+ if(array_key_exists("contractconfiggroup_id", $filter)) {
+ $contractconfiggroup_id = $filter['contractconfiggroup_id'];
+ if(is_numeric($contractconfiggroup_id)) {
+ $where .= " AND contractconfiggroup_id=$contractconfiggroup_id";
+ }
+ }
+
if(array_key_exists("group_id", $filter)) {
$group_id = $filter['group_id'];
if(is_numeric($group_id)) {
diff --git a/application/ContractconfigValue/ContractconfigValueModel.php b/application/ContractconfigValue/ContractconfigValueModel.php
index f3e8441c2..cf8cec2f7 100644
--- a/application/ContractconfigValue/ContractconfigValueModel.php
+++ b/application/ContractconfigValue/ContractconfigValueModel.php
@@ -1,12 +1,11 @@
select("ContractconfigValue", "*", "$where LIMIT 1");
+ $res = $db->select("ContractconfigValue", "*", "$where ORDER BY item_id, contract_id LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new ContractconfigValue($data);
@@ -73,7 +72,7 @@ class ContractconfigValueModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
- $res = $db->select("ContractconfigValue", "*", "$where ORDER BY name, filename");
+ $res = $db->select("ContractconfigValue", "*", "$where ORDER BY item_id, contract_id");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new ContractconfigValue($data);
@@ -86,24 +85,44 @@ class ContractconfigValueModel {
$where = "1=1 ";
//var_dump($filter);exit;
- if(array_key_exists("name", $filter)) {
- $name = FronkDB::singleton()->escape($filter['name']);
- if($name) {
- $where .= " AND name='$name'";
+ if(array_key_exists("contract_id", $filter)) {
+ $contract_id = $filter['contract_id'];
+ if(is_numeric($contract_id)) {
+ $where .= " AND contract_id=$contract_id";
+ } elseif(is_array($contract_id) && count($contract_id)) {
+ $where .= " AND contract_id IN (". implode(",", $contract_id).")";
}
}
- if(array_key_exists("filename", $filter)) {
- $filename = FronkDB::singleton()->escape($filter['filename']);
- if($filename) {
- $where .= " AND filename='$filename'";
+ if(array_key_exists("item_id", $filter)) {
+ $item_id = $filter['item_id'];
+ if(is_numeric($item_id)) {
+ $where .= " AND item_id=$item_id";
+ } elseif(is_array($item_id) && count($item_id)) {
+ $where .= " AND item_id IN (". implode(",", $item_id).")";
}
}
- if(array_key_exists("subfolder", $filter)) {
- $subfolder = FronkDB::singleton()->escape($filter['subfolder']);
- if($subfolder) {
- $where .= " AND subfolder='$subfolder'";
+ if(array_key_exists("int", $filter)) {
+ $int = $filter['int'];
+ if(is_numeric($int)) {
+ $where .= " AND int=$int";
+ } elseif(is_array($int) && count($int)) {
+ $where .= " AND `int` IN (". implode(",", $int).")";
+ }
+ }
+
+ if(array_key_exists("string", $filter)) {
+ $string = FronkDB::singleton()->escape($filter['string']);
+ if($string) {
+ $where .= " AND `string`='$string'";
+ }
+ }
+
+ if(array_key_exists("text", $filter)) {
+ $text = FronkDB::singleton()->escape($filter['text']);
+ if($text) {
+ $where .= " AND `text`='$text'";
}
}
diff --git a/application/ContractconfiggroupProductgroup/ContractconfiggroupProductgroup.php b/application/ContractconfiggroupProductgroup/ContractconfiggroupProductgroup.php
new file mode 100644
index 000000000..621e6cfce
--- /dev/null
+++ b/application/ContractconfiggroupProductgroup/ContractconfiggroupProductgroup.php
@@ -0,0 +1,37 @@
+$name == null) {
+
+ if(!$this->id) {
+ return null;
+ }
+
+ if($name == "productgroup") {
+ $this->productgroup = new Productgroup($this->productgroup_id);
+ return $this->productgroup;
+ }
+
+ if($name == "contractconfiggroup") {
+ $this->contractconfiggroup = new ContractconfigGroup($this->contractconfiggroup_id);
+ return $this->contractconfiggroup;
+ }
+
+ $classname = ucfirst($name);
+ $idfield = $name."_id";
+ $this->$name = new $classname($this->$idfield);
+
+ if($this->$name->id) {
+ return $this->$name;
+ } else {
+ return null;
+ }
+ }
+
+ return $this->$name;
+ }
+}
\ No newline at end of file
diff --git a/application/ContractconfiggroupProductgroup/ContractconfiggroupProductgroupModel.php b/application/ContractconfiggroupProductgroup/ContractconfiggroupProductgroupModel.php
new file mode 100644
index 000000000..30339e264
--- /dev/null
+++ b/application/ContractconfiggroupProductgroup/ContractconfiggroupProductgroupModel.php
@@ -0,0 +1,107 @@
+ $value) {
+ if(property_exists(get_called_class(), $field)) {
+ $model ->$field = $value;
+ }
+ }
+
+ $me = new User();
+ $me->loadMe();
+
+ if($model->create_by === null) {
+ $model->create_by = $me->id;
+ }
+ if($model->edit_by === null) {
+ $model->edit_by = $me->id;
+ }
+
+ return $model;
+ }
+
+ public static function getAll() {
+ $items = [];
+
+ $db = FronkDB::singleton();
+
+ $res = $db->select("ContractconfiggroupProductgroup", "*", "1=1");
+ if($db->num_rows($res)) {
+ while($data = $db->fetch_object($res)) {
+ $items[] = new ContractconfiggroupProductgroup($data);
+ }
+ }
+ return $items;
+
+ }
+
+ public static function getFirst($filter) {
+ $db = FronkDB::singleton();
+
+ $where = self::getSqlFilter($filter);
+ $res = $db->select("ContractconfiggroupProductgroup", "*", "$where ORDER BY productgroup_id, contractconfiggroup_id LIMIT 1");
+ if($db->num_rows($res)) {
+ $data = $db->fetch_object($res);
+ $item = new ContractconfiggroupProductgroup($data);
+ if($item->id) {
+ return $item;
+ } else {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ public static function search($filter) {
+ $items = [];
+ $db = FronkDB::singleton();
+
+ $where = self::getSqlFilter($filter);
+ $res = $db->select("ContractconfiggroupProductgroup", "*", "$where ORDER BY productgroup_id, contractconfiggroup_id");
+ if($db->num_rows($res)) {
+ while($data = $db->fetch_object($res)) {
+ $items[] = new ContractconfiggroupProductgroup($data);
+ }
+ }
+ return $items;
+ }
+
+ private static function getSqlFilter($filter) {
+ $where = "1=1 ";
+
+ //var_dump($filter);exit;
+ if(array_key_exists("productgroup_id", $filter)) {
+ $productgroup_id = $filter['productgroup_id'];
+ if(is_numeric($productgroup_id)) {
+ $where .= " AND productgroup_id=$productgroup_id";
+ } elseif(is_array($productgroup_id) && count($productgroup_id)) {
+ $where .= " AND productgroup_id IN (". implode(",", $productgroup_id).")";
+ }
+ }
+
+ if(array_key_exists("contractconfiggroup_id", $filter)) {
+ $contractconfiggroup_id = $filter['contractconfiggroup_id'];
+ if(is_numeric($contractconfiggroup_id)) {
+ $where .= " AND contractconfiggroup_id=$contractconfiggroup_id";
+ } elseif(is_array($contractconfiggroup_id) && count($contractconfiggroup_id)) {
+ $where .= " AND contractconfiggroup_id IN (". implode(",", $contractconfiggroup_id).")";
+ }
+ }
+
+ //var_dump($filter, $where);exit;
+ return $where;
+ }
+
+}
\ No newline at end of file
diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php
index 4497bddd4..71a617c0d 100644
--- a/application/Preordercampaign/PreordercampaignController.php
+++ b/application/Preordercampaign/PreordercampaignController.php
@@ -192,6 +192,12 @@ class PreordercampaignController extends mfBaseController {
$data['required_preorder_fields'] = null;
}
+ if($r->district_is_city == 1) {
+ $data['district_is_city'] = 1;
+ } else {
+ $data['district_is_city'] = 0;
+ }
+
$data['edit_by'] = $this->me->id;
diff --git a/application/Preordercampaign/PreordercampaignModel.php b/application/Preordercampaign/PreordercampaignModel.php
index c297c6f2c..af4e5ca31 100644
--- a/application/Preordercampaign/PreordercampaignModel.php
+++ b/application/Preordercampaign/PreordercampaignModel.php
@@ -3,11 +3,15 @@
class PreordercampaignModel {
public $name;
public $network_id;
+ public $homes_count;
public $fulfillment;
+ public $product_type;
public $description;
public $area;
public $from;
public $to;
+ public $required_preorder_fields;
+ public $district_is_city;
public $note;
diff --git a/application/ProducttechAttribute/ProducttechAttribute.php b/application/ProducttechAttribute/ProducttechAttribute.php
index a5dafef73..9d21cfc6f 100644
--- a/application/ProducttechAttribute/ProducttechAttribute.php
+++ b/application/ProducttechAttribute/ProducttechAttribute.php
@@ -2,10 +2,30 @@
class ProducttechAttribute extends mfBaseModel {
private $producttech;
+ private $contractval;
+ private $contract_id;
+
+
+ public function setContractId($contract_id) {
+ if(!is_numeric($contract_id)) {
+ return false;
+ }
+ $this->contract_id = $contract_id;
+ return true;
+ }
public function getProperty($name) {
if($this->$name == null) {
+ if($name == "contractval") {
+ if(!$this->contract_id) {
+ return null;
+ }
+ $this->contractval = ContractconfigValueModel::getFirst(['item_id' => $this->id]);
+ //var_dump($this->contractval);
+ return $this->contractval;
+ }
+
$classname = ucfirst($name);
$idfield = $name."_id";
$this->$name = new $classname($this->$idfield);
diff --git a/application/ProducttechAttribute/ProducttechAttributeModel.php b/application/ProducttechAttribute/ProducttechAttributeModel.php
index 6f72c54a9..3f6773ae4 100644
--- a/application/ProducttechAttribute/ProducttechAttributeModel.php
+++ b/application/ProducttechAttribute/ProducttechAttributeModel.php
@@ -102,6 +102,20 @@ class ProducttechAttributeModel {
$db = FronkDB::singleton();
+ if(array_key_exists("forproduct", $filter)) {
+ $forproduct = $db->escape($filter['forproduct']);
+ if(is_numeric($forproduct)) {
+ $where .= " AND `forproduct` = $forproduct";
+ }
+ }
+
+ if(array_key_exists("forcontract", $filter)) {
+ $forcontract = $db->escape($filter['forcontract']);
+ if(is_numeric($forcontract)) {
+ $where .= " AND `forcontract` = $forcontract";
+ }
+ }
+
//var_dump($filter);exit;
if(array_key_exists("name", $filter)) {
$name = $db->escape($filter['name']);