diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php
index 4df6026e9..dd7ddbf75 100644
--- a/Layout/default/Preordercampaign/Form.php
+++ b/Layout/default/Preordercampaign/Form.php
@@ -145,7 +145,7 @@
+
+
diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php
index 3078f7b42..bb8f72549 100644
--- a/application/Api/v1/AddressdbApicontroller.php
+++ b/application/Api/v1/AddressdbApicontroller.php
@@ -6,6 +6,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
private $campaigns_by_scluster = [];
private $allowed_preordertypes = [];
private $district_is_city = false;
+ private $hausnummer_add_zusatz = false;
protected function init() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -50,6 +51,10 @@ class AddressdbApicontroller extends mfBaseApicontroller {
if($campaign->district_is_city == 1) {
$this->district_is_city = true;
}
+
+ if($campaign->hausnummer_add_zusatz == 1) {
+ $this->hausnummer_add_zusatz = true;
+ }
}
foreach(PreordercampaignOriginhostnameModel::search(['preordercampaign_id' => $campaign->id]) as $origin) {
@@ -347,12 +352,20 @@ class AddressdbApicontroller extends mfBaseApicontroller {
}
}
+ $housenumber = $data->hausnummer;
+ if($this->hausnummer_add_zusatz) {
+ if($data->zusatz) {
+ $housenumber .= " (".$data->zusatz.")";
+ }
+ }
+
+
$addresses[] = [
'zip' => $data->plz,
'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde,
'district' => $data->ortschaft,
'street' => $data->strasse,
- 'housenumber' => $data->hausnummer,
+ 'housenumber' => $housenumber,
'block' => $data->block,
'stock' => $data->stock,
'stiege' => $data->stiege,
diff --git a/application/Api/v1/PreorderApicontroller.php b/application/Api/v1/PreorderApicontroller.php
index 5007fabdf..45a26711a 100644
--- a/application/Api/v1/PreorderApicontroller.php
+++ b/application/Api/v1/PreorderApicontroller.php
@@ -11,6 +11,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
private $allowed_preordertypes = [];
private $district_is_city = false;
+ private $hausnummer_add_zusatz = false;
protected function init() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -46,6 +47,11 @@ class PreorderApicontroller extends mfBaseApicontroller {
if($campaign->district_is_city == 1) {
$this->district_is_city = true;
}
+
+ if($campaign->hausnummer_add_zusatz == 1) {
+ $this->hausnummer_add_zusatz = true;
+ }
+
}
@@ -131,12 +137,24 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
}
+ $zusatz = false;
+ if($this->hausnummer_add_zusatz) {
+ $m = [];
+ if(preg_match('/^(.*) \((.+)\)$/', trim($address_search['hausnummer']), $m)) {
+ $address_search['hausnummer'] = $this->db()->escape($m[1]);
+ $zusatz = $m[2];
+ }
+ }
+
$unit_search = [];
foreach(['block','stiege','stock','tuer'] as $key) {
if(property_exists($this->post['address'], $key) && trim($this->post['address']->$key)) {
$unit_search[$key] = trim($this->post['address']->$key);
}
}
+ if($zusatz) {
+ $unit_search['zusatz'] = $zusatz;
+ }
/*
* check customer
@@ -173,13 +191,15 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
$address = $this->db()->fetch_object($res);
-
+ //var_dump($address);exit;
/*
* search wohneinheit
*/
+ $where = "1=1 ";
$unit = false;
if(count($unit_search)) {
+ //var_dump($unit_search);exit;
foreach($unit_search as $field => $value) {
if($field == "stock" || $field == "stiege") continue; // only check for block and tuer
$where .= " AND `$field` = '$value'";
@@ -191,6 +211,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
$sql = "SELECT * FROM view_wohneinheit WHERE $where AND hausnummer_id=".$address->hausnummer_id;
+ $this->log->debug($sql);
$res = $this->db()->query($sql);
if($this->db()->num_rows($res)) {
$unit = $this->db()->fetch_object($res);
@@ -200,14 +221,19 @@ class PreorderApicontroller extends mfBaseApicontroller {
} else {
// if all unit values are empty try to find the unit with all empty values
// failure is not an error, but must be checked by a human at some point
-
$where = "hausnummer_id=".$address->hausnummer_id." AND (block = '' OR block IS NULL) AND (stiege = '' OR stiege IS NULL) AND (stock = '' OR stock IS NULL) AND (tuer = '' OR tuer IS NULL)";
+ if($zusatz) {
+ $where .= " AND zusatz='$zusatz'";
+ } else {
+ $where .= " AND (zusatz = '' OR zusatz IS NULL)";
+ }
// filter salesclusters
if(count($this->filter_salescluster_ids)) {
$where .= " AND netzgebiet_id IN (".implode(',', $this->filter_salescluster_ids).")";
}
$sql = "SELECT * FROM view_wohneinheit WHERE $where";
+ $this->log->debug($sql);
$res = $this->db()->query($sql);
if($this->db()->num_rows($res)) {
$unit = $this->db()->fetch_object($res);
diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php
index cf2db55cd..90b77496e 100644
--- a/application/Preordercampaign/PreordercampaignController.php
+++ b/application/Preordercampaign/PreordercampaignController.php
@@ -243,6 +243,11 @@ class PreordercampaignController extends mfBaseController {
$data['district_is_city'] = 0;
}
+ if($r->hausnummer_add_zusatz == 1) {
+ $data['hausnummer_add_zusatz'] = 1;
+ } else {
+ $data['hausnummer_add_zusatz'] = 0;
+ }
$data['edit_by'] = $this->me->id;
diff --git a/application/Preordercampaign/PreordercampaignModel.php b/application/Preordercampaign/PreordercampaignModel.php
index c57dd4902..0a987781f 100644
--- a/application/Preordercampaign/PreordercampaignModel.php
+++ b/application/Preordercampaign/PreordercampaignModel.php
@@ -12,7 +12,7 @@ class PreordercampaignModel {
public $to;
public $required_preorder_fields;
public $district_is_city;
-
+ public $hausnummer_add_zusatz;
public $note;
public $create_by;