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; + } + +?> +"name?>";"type,"preorder")?>";"name?>";"connection_type,"preorder")?>";"name?>";"plz?>";"name?>";"";connection_count?>;"company?>";"uid?>";"firstname?>";"lastname?>";"street?>";"zip?>";"city?>";"phone?>";"email?>";"getCompanyOrName()?>";;; +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";