diff --git a/Layout/default/Contract/OnerchangeForm.php b/Layout/default/Contract/OnerchangeForm.php new file mode 100644 index 000000000..18c952838 --- /dev/null +++ b/Layout/default/Contract/OnerchangeForm.php @@ -0,0 +1,7 @@ + + + +
+
+
+ +

Aktives Produkt

+
+
+
+ + +
+
+ + + +
+
+

product_name?> (id?>)

+ + + + + + + + + + + + + + + + + +
Matchcode:matchcode?>
Vertragsinhaber: $contract->owner->id])?>">owner->getCompanyOrName()?> (owner->customer_number?>)
Produkt:product_name?>
Produkt Info:product_info?>
+ +
+
+ + +
+
+

Konfiguration bearbeiten

+ +
"> + + + + + + + items as $item): ?> + + + + + + +

name?>

+
displayname?>: + type == "enum"): ?> + + + " name="itemvalues[id?>]" value="itemvalues[$item->id] : $item->getValue()?>" /> + + description?> +
+ + +
+
+ +
+
+
+ +
+
+ + + +
+
+ + \ No newline at end of file diff --git a/Layout/default/Contractconfig/Form.php b/Layout/default/Contractconfig/Form.php index bfa7d3f5f..6778e84b8 100644 --- a/Layout/default/Contractconfig/Form.php +++ b/Layout/default/Contractconfig/Form.php @@ -8,7 +8,8 @@

Aktives Produkt

@@ -77,6 +78,7 @@ " name="itemvalues[id?>]" value="itemvalues[$item->id] : $item->getValue()?>" /> + description?> diff --git a/Layout/default/Contractconfig/Index.php b/Layout/default/Contractconfig/Index_old.php similarity index 100% rename from Layout/default/Contractconfig/Index.php rename to Layout/default/Contractconfig/Index_old.php diff --git a/application/ADBGemeinde/ADBGemeindeModel.php b/application/ADBGemeinde/ADBGemeindeModel.php index 1b10fac47..cccdc428b 100644 --- a/application/ADBGemeinde/ADBGemeindeModel.php +++ b/application/ADBGemeinde/ADBGemeindeModel.php @@ -130,6 +130,13 @@ class ADBGemeindeModel { } } + if(array_key_exists("netzgebiet_extref", $filter)) { + $netzgebiet_extref = FronkDB::singleton()->escape($filter['netzgebiet_extref']); + if($netzgebiet_extref) { + $where .= " AND Netzgebiet.extref = '$netzgebiet_extref'"; + } + } + if(array_key_exists("code", $filter)) { $code = $filter['code']; if(is_numeric($code)) { diff --git a/application/ADBHausnummer/ADBHausnummer.php b/application/ADBHausnummer/ADBHausnummer.php index 55817fb17..dda8835e2 100644 --- a/application/ADBHausnummer/ADBHausnummer.php +++ b/application/ADBHausnummer/ADBHausnummer.php @@ -1,6 +1,7 @@ freigaben; } + if($name == "netzgebiet") { + $this->netzgebiet = new ADBNetzgebiet($this->netzgebiet_id); + return $this->netzgebiet; + } + if($name == "ortschaft") { $this->ortschaft = new ADBOrtschaft($this->ortschaft_id); return $this->ortschaft; diff --git a/application/ADBOrtschaft/ADBOrtschaftModel.php b/application/ADBOrtschaft/ADBOrtschaftModel.php index 865573435..cd28b34c3 100644 --- a/application/ADBOrtschaft/ADBOrtschaftModel.php +++ b/application/ADBOrtschaft/ADBOrtschaftModel.php @@ -129,6 +129,13 @@ class ADBOrtschaftModel { } } + if(array_key_exists("netzgebiet_extref", $filter)) { + $netzgebiet_extref = FronkDB::singleton()->escape($filter['netzgebiet_extref']); + if($netzgebiet_extref) { + $where .= " AND Netzgebiet.extref = '$netzgebiet_extref'"; + } + } + if(array_key_exists("gemeinde_id", $filter)) { $gemeinde_id = $filter['gemeinde_id']; if(is_numeric($gemeinde_id)) { diff --git a/application/ADBPlz/ADBPlzModel.php b/application/ADBPlz/ADBPlzModel.php index 6514993a4..b4fe7526b 100644 --- a/application/ADBPlz/ADBPlzModel.php +++ b/application/ADBPlz/ADBPlzModel.php @@ -128,6 +128,13 @@ class ADBPlzModel { } } + if(array_key_exists("netzgebiet_extref", $filter)) { + $netzgebiet_extref = FronkDB::singleton()->escape($filter['netzgebiet_extref']); + if($netzgebiet_extref) { + $where .= " AND Netzgebiet.extref = '$netzgebiet_extref'"; + } + } + if(array_key_exists("gemeinde_id", $filter)) { $gemeinde_id = $filter['gemeinde_id']; if(is_numeric($gemeinde_id)) { diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php index b79316dc3..abf1b044c 100644 --- a/application/Api/v1/AddressdbApicontroller.php +++ b/application/Api/v1/AddressdbApicontroller.php @@ -80,12 +80,13 @@ class AddressdbApicontroller extends mfBaseApicontroller { $city = trim($get['city']); $district = trim($get['district']); $zip = trim($get['zip']); + $search_cluster_id = trim($get['cluster_id']); if(!$city) { $city = $search; } - if(!$city && !$zip) { + if(!$city && !$zip && !$search_cluster_id) { return mfResponse::BadRequest(['message' => "No search parameters"]); } @@ -101,6 +102,10 @@ class AddressdbApicontroller extends mfBaseApicontroller { $city_search['netzgebiet_id'] = $this->filter_salescluster_ids; } + if($search_cluster_id) { + $city_search['netzgebiet_extref'] = $search_cluster_id; + } + if($this->district_is_city) { $results = ADBOrtschaftModel::search($city_search); } else { @@ -122,10 +127,11 @@ class AddressdbApicontroller extends mfBaseApicontroller { $get = array_merge($this->post, $this->get); // search parameter is unofficially deprecated but still supported - $search = trim($get['search']); - $city = trim($get['city']); - $district = trim($get['district']); - $zip = trim($get['zip']); + $search = $this->db()->escape(trim($get['search'])); + $city = $this->db()->escape(trim($get['city'])); + $district = $this->db()->escape(trim($get['district'])); + $zip = $this->db()->escape(trim($get['zip'])); + $search_cluster_id = $this->db()->escape(trim($get['cluster_id'])); if(!$district) { $district = $search; @@ -138,23 +144,23 @@ class AddressdbApicontroller extends mfBaseApicontroller { $where = "1=1"; if($district && $district != "%") { - $city_search = ['ortschaft%' => $district]; $where .= " AND ortschaft like '$district%'"; } if($city && $city != "%") { - $city_search = ['name%' => $city]; $where .= " AND gemeinde like '$city%'"; } if($zip && $zip != "%") { - $city_search['plz%'] = $zip; $where .= " AND plz like '$zip%'"; } if(count($this->filter_salescluster_ids)) { - $city_search['netzgebiet_id'] = $this->filter_salescluster_ids; $where .= " AND netzgebiet_id IN (".join(", ", $this->filter_salescluster_ids).")"; } + if($search_cluster_id) { + $where .= " AND netzgebiet_extref='$search_cluster_id'"; + } + $cities = []; $sql = "SELECT gemeinde, ortschaft FROM view_hausnummer WHERE $where GROUP BY gemeinde,ortschaft_id ORDER BY gemeinde, ortschaft"; @@ -169,22 +175,6 @@ class AddressdbApicontroller extends mfBaseApicontroller { } } - /*foreach(ADBGemeindeModel::search($city_search) as $gem) { - $districts = []; - - if($district) { - foreach(ADBOrtschaftModel::search(["gemeinde_id" => $gem->id, "name%" => $district]) as $ort) { - $districts[] = $ort->name; - } - } else { - foreach($gem->ortschaften as $ort) { - $districts[] = $ort->name; - } - } - - $cities[$gem->name] = $districts; - }*/ - return mfResponse::Ok(['cities' => $cities]); } @@ -195,8 +185,9 @@ class AddressdbApicontroller extends mfBaseApicontroller { // search parameter is unofficially deprecated but still supported $search = trim($get['search']); $zip = trim($get['zip']); + $search_cluster_id = trim($get['cluster_id']); - if(!$search && !$zip) { + if(!$search && !$zip && !$search_cluster_id) { return mfResponse::BadRequest(['message' => "Searchstring cannot be empty!"]); } @@ -209,6 +200,11 @@ class AddressdbApicontroller extends mfBaseApicontroller { if(count($this->filter_salescluster_ids)) { $zip_search['netzgebiet_id'] = $this->filter_salescluster_ids; } + + if($search_cluster_id) { + $zip_search['netzgebiet_extref'] = $search_cluster_id; + } + //var_dump($zip_search);exit; $results = ADBPlzModel::search($zip_search); @@ -227,12 +223,13 @@ class AddressdbApicontroller extends mfBaseApicontroller { $get = array_merge($this->post, $this->get); // search parameter is unofficially deprecated but still supported - $search = trim($get['search']); - $street = trim($get['street']); - $city = trim($get['city']); - $zip = trim($get['zip']); + $search = $this->db()->escape(trim($get['search'])); + $street = $this->db()->escape(trim($get['street'])); + $city = $this->db()->escape(trim($get['city'])); + $zip = $this->db()->escape(trim($get['zip'])); + $search_cluster_id = $this->db()->escape(trim($get['cluster_id'])); - if(!$search && !$street && !$city && !$zip) { + if(!$search && !$street && !$city && !$zip && !$search_cluster_id) { return mfResponse::BadRequest(['message' => "No search parameters"]); } @@ -241,31 +238,26 @@ class AddressdbApicontroller extends mfBaseApicontroller { } $where = "1=1"; - $street_search = ["name%" => $street]; - $street = $this->db()->escape($street); $where .= " AND strasse like '$street%'"; if($city) { if($this->district_is_city) { - $street_search['ortschaft%'] = $city; - $city = $this->db()->escape($city); $where .= " AND ortschaft like '$city%'"; } else { - $street_search['gemeinde%'] = $city; - $city = $this->db()->escape($city); $where .= " AND gemeinde like '$city%'"; } } if($zip) { - $street_search['plz%'] = $zip; - $zip = $this->db()->escape($zip); $where .= " AND plz like '$zip%'"; } if(count($this->filter_salescluster_ids)) { - $street_search['netzgebiet_id'] = $this->filter_salescluster_ids; $where .= " AND netzgebiet_id IN (".join(", ", $this->filter_salescluster_ids).")"; } + if($search_cluster_id) { + $where .= " AND netzgebiet_extref='$search_cluster_id'"; + } + $streets = []; $sql = "SELECT strasse FROM view_hausnummer WHERE $where GROUP BY strasse ORDER BY strasse"; @@ -277,13 +269,6 @@ class AddressdbApicontroller extends mfBaseApicontroller { } } - /*$results = ADBStrasseModel::search($street_search); - - - - foreach($results as $result) { - $streets[] = $result->name; - }*/ $streets = array_unique($streets); sort($streets); @@ -373,6 +358,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { $tmp_addresses[$address_key] = [ 'sort_key' => $sort_key, 'oaid' => $data->hausnummer_oaid, + 'cluster_id' => $data->netzgebiet_extref, 'zip' => $data->plz, 'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde, 'district' => $data->ortschaft, @@ -473,6 +459,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { $new_address = []; $new_address['oaid'] = $u['oaid']; $new_address['building_oaid'] = $ta['oaid']; + $new_address['cluster_id'] = $ta['cluster_id']; $new_address['street'] = $ta['street']; $new_address['housenumber'] = $ta['housenumber']; $new_address['zip'] = $ta['zip']; @@ -507,6 +494,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { // unofficially supporting GET and POST in v1 $get = array_merge($this->post, $this->get); + $search_cluster_id = $this->db()->escape(trim($get['cluster_id'])); $search_street = $this->db()->escape(trim($get['street'])); $search_zip = $this->db()->escape(trim($get['zip'])); $search_district = $this->db()->escape(trim($get['district'])); @@ -549,11 +537,14 @@ class AddressdbApicontroller extends mfBaseApicontroller { if(count($this->filter_salescluster_ids)) { $where .= " AND Hausnummer.netzgebiet_id IN (".implode(",", $this->filter_salescluster_ids).")"; } + if($search_cluster_id) { + $where .= " AND netzgebiet_extref='$search_cluster_idh'"; + } //echo $where; //var_dump($this->filter_salescluster_ids);exit; $sql = AddressDB::$wohneinheit_query; - $sql .= " WHERE $where ORDER BY plz, gemeinde, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(num), num, LENGTH(tuer), tuer"; + $sql .= "\n WHERE $where ORDER BY plz, gemeinde, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(num), num, LENGTH(tuer), tuer"; //$sql = "SELECT * FROM view_wohneinheit WHERE $where ORDER BY plz, gemeinde, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(num), num, LENGTH(tuer), tuer"; $this->log->debug($sql); @@ -590,6 +581,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { $tmp_addresses[$address_key] = [ 'oaid' => $data->hausnummer_oaid, + 'cluster_id' => $data->netzgebiet_extref, 'zip' => $data->plz, 'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde, 'district' => $data->ortschaft, @@ -629,6 +621,7 @@ class AddressdbApicontroller extends mfBaseApicontroller { $new_address = []; $new_address['oaid'] = $u['oaid']; $new_address['building_oaid'] = $ta['oaid']; + $new_address['cluster_id'] = $ta['cluster_id']; $new_address['street'] = $ta['street']; $new_address['housenumber'] = $ta['housenumber']; $new_address['zip'] = $ta['zip']; diff --git a/application/Preorder/Preorder.php b/application/Preorder/Preorder.php index 5bb4fb2a6..6e1d42085 100644 --- a/application/Preorder/Preorder.php +++ b/application/Preorder/Preorder.php @@ -60,6 +60,7 @@ class Preorder extends mfBaseModel { $a['address_info'] = ($this->address_info) ? $this->address_info : null; $address = []; + $address['cluster_id'] = $hausnummer->netzgebiet->extref; $address['street'] = $hausnummer->strasse->name; $address['housenumber'] = $hausnummer->hausnummer; $address['zip'] = $hausnummer->plz->plz; diff --git a/public/docs/preorder-api.yaml b/public/docs/preorder-api.yaml index c4c166e3f..9391a72c8 100644 --- a/public/docs/preorder-api.yaml +++ b/public/docs/preorder-api.yaml @@ -101,6 +101,11 @@ paths: in: query schema: type: string + - name: cluster_id + description: Cluster ID + in: query + schema: + type: string - name: street description: Straße Suchbegriff in: query @@ -188,6 +193,11 @@ paths: description: Sucht nach Straßen operationId: findStreets parameters: + - name: cluster_id + description: Cluster ID + in: query + schema: + type: string - name: street description: Straße Suchbegriff in: query @@ -235,6 +245,11 @@ paths: description: Sucht nach Postleitzahlen operationId: findZips parameters: + - name: cluster_id + description: Cluster ID + in: query + schema: + type: string - name: zip description: Postleitzahl Suchbegriff in: query @@ -272,6 +287,11 @@ paths: description: Sucht nach Gemeinden operationId: findCity parameters: + - name: cluster_id + description: Cluster ID + in: query + schema: + type: string - name: zip description: Postleitzahl Suchbegriff in: query @@ -314,6 +334,11 @@ paths: description: Sucht nach Ortsteilen operationId: findDistrict parameters: + - name: cluster_id + description: Cluster ID + in: query + schema: + type: string - name: zip description: Postleitzahl Suchbegriff in: query @@ -793,6 +818,9 @@ components: addressResponse: type: object properties: + cluster_id: + type: string + description: Cluster ID street: type: string description: Strasse der Anschlussadresse