diff --git a/Layout/default/Preorder/Index.php b/Layout/default/Preorder/Index.php
index f228f4f75..0cb4001ab 100644
--- a/Layout/default/Preorder/Index.php
+++ b/Layout/default/Preorder/Index.php
@@ -119,6 +119,9 @@
">Filter zurücksetzen
+ is("Preorderfront")): ?>
+
+
diff --git a/Layout/default/Preorder/export.csv.php b/Layout/default/Preorder/export.csv.php
new file mode 100644
index 000000000..c251ddb55
--- /dev/null
+++ b/Layout/default/Preorder/export.csv.php
@@ -0,0 +1,48 @@
+
+Kampagne;Bestelltyp;Status;Anschlusstyp;Anschluss Strasse;Anschluss PLZ;Anschluss Ort;Anschluss Wohneinheit;Anzahl Anschlüsse;Kunde Firma;Kunde UID;Kunde Vorname;Kunde Nachname;Kunde Strasse;Kunde PLZ;Kunde Ort;Kunde Telefon;Kunde Email;Partner;BEP festgelegt;Starterpaket erhalten;
+preordercampaign_id);
+ $status = Layout::getMfValuecacheObject("Preorderstatus", $data->status_id);
+ $hausnummer = Layout::getMfValuecacheObject("ADBHausnummer", $data->adb_hausnummer_id);
+ $wohneinheit = Layout::getMfValuecacheObject("ADBWohneinheit", $data->adb_wohneinheit_id);
+ $strasse = Layout::getMfValuecacheObject("ADBStrasse", $hausnummer->strasse_id);
+ $gemeinde = Layout::getMfValuecacheObject("ADBGemeinde",$strasse->gemeinde_id);
+ $ortschaft = Layout::getMfValuecacheObject("ADBOrtschaft", $hausnummer->ortschaft_id);
+ $plz = Layout::getMfValuecacheObject("ADBPlz", $hausnummer->plz_id);
+ $partner = Layout::getMfValuecacheObject("Address", $hausnummer->partner_id);
+
+ $unit_data = "";
+ if($wohneinheit->block) $unit_data .= "Block ".$wohneinheit->block;
+ if($wohneinheit->stiege) $unit_data .= "Stiege ".$wohneinheit->stiege;
+ if($wohneinheit->stock) $unit_data .= "Stock ".$wohneinheit->stock;
+ if($wohneinheit->tuer) $unit_data .= "Tür ".$wohneinheit->tuer;
+
+ if($wohneinheit->unit_string) {
+ $unit_data = $wohneinheit->unit_string;
+ }
+
+ $bep = false;
+ $inhouse = false;
+
+ if($data->attributes) {
+ $attribs = json_decode($data->attributes, true);
+ if($attribs['bep_specified']) $bep = true;
+ if($attribs['inhouse_cabling_supplied']) $inhouse = true;
+ }
+
+?>
+"=$campaign->name?>";"=__($data->type,"preorder")?>";"=$status->name?>";"=__($data->connection_type,"preorder")?>";"=$strasse->name?>";"=$plz->plz?>";"=$ortschaft->name?>";"=$unit_data?>";=$data->connection_count?>;"=$data->company?>";"=$data->uid?>";"=$data->firstname?>";"=$data->lastname?>";"=$data->street?>";"=$data->zip?>";"=$data->city?>";"=$data->phone?>";"=$data->email?>";"=$partner->getCompanyOrName()?>";=($bep) ? "1" : "0"?>;=($inhouse) ? "1" : "0"?>;
+layout->set("filter", $rfilter);
- $where = "";
$filter = $this->getPreparedFilter($rfilter);
// pagination defaults
@@ -37,7 +36,6 @@ class PreorderController extends mfBaseController {
$pagination['start'] = intval($this->request->s);
}
- $preorder_filter = $filter;
$my_campaigns = [];
$my_campaign_ids = [];
@@ -110,17 +108,17 @@ class PreorderController extends mfBaseController {
$new_filter['add-where'] = "";
- if(array_key_exists("address", $filter)) {
+ if(array_key_exists("address", $filter) && $filter["address"]) {
$address = $this->db()->escape($filter['address']);
$new_filter['add-where'] .= " AND (adb_hausnummer.gemeinde like '%$address%' OR adb_hausnummer.plz like '%$address%' OR adb_hausnummer.strasse like '%$address%')";
}
- if(array_key_exists("hausnummer", $filter)) {
+ if(array_key_exists("hausnummer", $filter) && $filter["hausnummer"]) {
$hausnummer = $this->db()->escape($filter['hausnummer']);
$new_filter['hausnummer'] = $hausnummer;
}
- if(array_key_exists("kunde", $filter)) {
+ if(array_key_exists("kunde", $filter) && $filter["kunde"]) {
$kunde = $this->db()->escape($filter['kunde']);
$new_filter['add-where'] .= " AND (company like '%$kunde%' OR firstname like '%$kunde%' OR lastname like '%$kunde%' OR concat(firstname, ' ', lastname) like '%$kunde%' OR concat(lastname, ' ', firstname) like '%$kunde%' OR street like '%$kunde%' OR zip like '%$kunde%' OR city like '%$kunde%')";
}
@@ -603,6 +601,70 @@ class PreorderController extends mfBaseController {
}
+
+ protected function exportAction() {
+ $rfilter = $this->request->filter;
+ if(!is_array($rfilter)) {
+ $rfilter = [];
+ }
+ $filter = $this->getPreparedFilter($rfilter);
+
+
+ if($this->me->is("Admin")) {
+ $my_networks = NetworkModel::getAll();
+ } else {
+ $my_networks = $this->me->myNetworks(["netowner", "salespartner"]);
+ }
+
+ $netzgebiet_ids = [];
+ $my_adb_networks = [];
+ foreach($my_networks as $network) {
+ if($network->adb_netzgebiet_id && !in_array($network->adb_netzgebiet_id, $netzgebiet_ids)) {
+ $netzgebiet_ids[] = $network->adb_netzgebiet_id;
+ $my_adb_networks[$network->adb_netzgebiet_id] = new ADBNetzgebiet($network->adb_netzgebiet_id);
+ }
+ }
+
+ /*if(array_key_exists("network_id", $filter) && $filter['network_id']) {
+ if($this->me->is("Admin")) {
+ $filter['netzgebiet_id'] = $filter['network_id'];
+ } else {
+ if(in_array($filter['network_id'], $netzgebiet_ids)) {
+ $filter['netzgebiet_id'] = $filter['network_id'];
+ }
+ }
+ }*/
+ unset($filter['network_id']);
+
+ $preorder_filter = $filter;
+ /*if(!array_key_exists("netzgebiet_id", $preorder_filter)) {
+ $preorder_filter['netzgebiet_id'] = $netzgebiet_ids;
+ }*/
+
+ $campaign_ids = [];
+ foreach(PreordercampaignModel::search(["netzgebiet_id" => $netzgebiet_ids]) as $campaign) {
+ if(!in_array($campaign->id, $campaign_ids)) {
+ $campaign_ids[] = $campaign->id;
+ }
+ }
+
+ if(array_key_exists("preordercampaign_id", $filter) && in_array($filter['preordercampaign_id'], $campaign_ids)) {
+ $preorder_filter["preordercampaign_id"] = $filter['preordercampaign_id'];
+ } else {
+ $preorder_filter["preordercampaign_id"] = $campaign_ids;
+ }
+
+ $preorder_filter['layout()->setTemplate("Preorder/export.csv");
+ $this->layout()->set("res", $res);
+ }
+
protected function apiAction() {
if(!$this->me->is(["Admin","netowner","salespartner"])) {
$this->redirect("Dashboard");
diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php
index 9564c1695..4117da7a4 100644
--- a/application/Preorder/PreorderModel.php
+++ b/application/Preorder/PreorderModel.php
@@ -232,7 +232,7 @@ class PreorderModel {
return 0;
}
- public static function search($filter, $limit = false) {
+ public static function search($filter, $limit = false, $returnDBRessource = false) {
$items = [];
$db = FronkDB::singleton();
@@ -257,6 +257,12 @@ class PreorderModel {
$res = $db->query($sql);
if($db->num_rows($res)) {
+
+ // hack for Preorder::exportAction
+ if($returnDBRessource) {
+ return $res;
+ }
+
while($data = $db->fetch_object($res)) {
$items[] = new Preorder($data);
}
diff --git a/lang/de.php b/lang/de.php
index 7cb6fb875..6e2612066 100644
--- a/lang/de.php
+++ b/lang/de.php
@@ -44,6 +44,12 @@ $l['preorder.provision'] = "Vorsorgeanschluss";
$l['preorder.order'] = "Vollanschluss";
$l['preorder.reorder'] = "Nachbestellung";
+$l['preorder.single-dwelling'] = "Einfahmilienhaus";
+$l['preorder.multi-dwelling'] = "Mehrfamilienhaus";
+$l['preorder.apartment-building'] = "Mehrparteienhaus";
+$l['preorder.apartment'] = "Wohneinheit in Mehrparteienhaus";
+$l['preorder.business'] = "Gewerbebetrieb";
+
$l['contract.link'] = "Verknüpfung";
$l['contract.upgrade'] = "Upgrade";
$l['contract.downgrade'] = "Downgrade";