Added Preorder Export
This commit is contained in:
@@ -119,6 +119,9 @@
|
||||
<?php else: ?>
|
||||
<a class="btn btn-secondary" href="<?=self::getUrl("Preorder")?>">Filter zurücksetzen</a>
|
||||
<?php endif; ?>
|
||||
<?php if(!$me->is("Preorderfront")): ?>
|
||||
<button type="submit" formaction="<?=self::getUrl("Preorder", "export")?>" id="export-button" class="btn btn-outline-success ml-2"><i class="fas fa-download"></i> CSV-Export</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
48
Layout/default/Preorder/export.csv.php
Normal file
48
Layout/default/Preorder/export.csv.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
ob_end_flush();
|
||||
header("Content-type: text/csv");
|
||||
header('Content-disposition: attachment; filename="preorder-export-'.date('Y-m-d_H-i-s').'.csv"');
|
||||
?>
|
||||
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;
|
||||
<?php
|
||||
$line = 0;
|
||||
|
||||
while($data = mysqli_fetch_object($res)):
|
||||
$campaign = Layout::getMfValuecacheObject("Preordercampaign", $data->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"?>;
|
||||
<?php
|
||||
$i++;
|
||||
if($line % 1000 === 0) {
|
||||
flush();
|
||||
}
|
||||
|
||||
endwhile;
|
||||
@@ -24,7 +24,6 @@ class PreorderController extends mfBaseController {
|
||||
|
||||
$this->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['<status_code'] = 800;
|
||||
|
||||
//var_dump($filter, $preorder_filter);exit;
|
||||
// Get mysqli resource from Model, so layout can output data as it's retrieved
|
||||
// Works around lousy performance and horrendous memory usage
|
||||
$res = PreorderModel::search($preorder_filter, [], true);
|
||||
|
||||
$this->layout()->setTemplate("Preorder/export.csv");
|
||||
$this->layout()->set("res", $res);
|
||||
}
|
||||
|
||||
protected function apiAction() {
|
||||
if(!$this->me->is(["Admin","netowner","salespartner"])) {
|
||||
$this->redirect("Dashboard");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user