ADB Statusflag done & Preorder statusflag import
This commit is contained in:
@@ -71,6 +71,24 @@
|
|||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Status Text</th>
|
<th>Status Text</th>
|
||||||
<td class="text-monospace"><?=$address->status->name?></td>
|
<td class="text-monospace"><?=$address->status->name?></td>
|
||||||
|
</tr><tr>
|
||||||
|
<th>Statusflags</th>
|
||||||
|
<td>
|
||||||
|
<table class="table table-sm table-bordered table-striped bg-white">
|
||||||
|
<tr>
|
||||||
|
<th class="text-left"></th>
|
||||||
|
<th class="text-left">Code</th>
|
||||||
|
<th class="text-left">Text</th>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($address->statusflags as $flag): ?>
|
||||||
|
<tr>
|
||||||
|
<td class="text-center"><?=($flag->value->value) ? "<i class='fas fa-check text-success'></i>" : ""?></td>
|
||||||
|
<td><?=$flag->code?></td>
|
||||||
|
<td><?=$flag->name?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td colspan="2"><h4>Adresse</h4></td>
|
<td colspan="2"><h4>Adresse</h4></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
|||||||
@@ -10,12 +10,19 @@ if(!$no_filename) {
|
|||||||
header('Content-disposition: attachment; filename="addressdb-export-'.date('Y-m-d_H-i-s').'.csv"');
|
header('Content-disposition: attachment; filename="addressdb-export-'.date('Y-m-d_H-i-s').'.csv"');
|
||||||
}
|
}
|
||||||
//header('Content-disposition: attachment; filename="addressdb-export-'.date('Y-m-d_H-i-s').'.csv"');
|
//header('Content-disposition: attachment; filename="addressdb-export-'.date('Y-m-d_H-i-s').'.csv"');
|
||||||
|
|
||||||
|
$status_flags_header = [];
|
||||||
|
foreach(ADBStatusflagModel::getAll() as $sflag) {
|
||||||
|
$status_flags_header[$sflag->code] = $sflag->code;
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
AddressDB_ID;Extref;Adrcd;OAID;Status Code; Status Name;Netzgebiet_Extref;Netzgebiet;Rimo Building External ID;GKZ;Gemeinde;OKZ;Ortschaft;PLZ;SKZ;Strasse;Hausnummer;Grundstueck;GPS Breite; GPS Laenge;Rollout;Rollout_Info;Freigabe;Nutzungseinheiten;GDA-Eigenschaft;Meridian;RW;HW;Sichtbarkeit
|
AddressDB_ID;Extref;Adrcd;OAID;Status Code;Status Name;"<?=implode('";"', $status_flags_header)?>";Netzgebiet_Extref;Netzgebiet;Rimo Building External ID;GKZ;Gemeinde;OKZ;Ortschaft;PLZ;SKZ;Strasse;Hausnummer;Grundstueck;GPS Breite;GPS Laenge;Rollout;Rollout_Info;Freigabe;Nutzungseinheiten;GDA-Eigenschaft;Meridian;RW;HW;Sichtbarkeit
|
||||||
<?php
|
<?php
|
||||||
$line = 0;
|
$line = 0;
|
||||||
|
|
||||||
while($data = mysqli_fetch_object($res)):
|
while($data = mysqli_fetch_object($res)):
|
||||||
|
$hausnummer = new ADBHausnummer($data->id);
|
||||||
$netzgebiet = Layout::getMfValuecacheObject("ADBNetzgebiet", $data->netzgebiet_id);
|
$netzgebiet = Layout::getMfValuecacheObject("ADBNetzgebiet", $data->netzgebiet_id);
|
||||||
$strasse = Layout::getMfValuecacheObject("ADBStrasse", $data->strasse_id);
|
$strasse = Layout::getMfValuecacheObject("ADBStrasse", $data->strasse_id);
|
||||||
$gemeinde = Layout::getMfValuecacheObject("ADBGemeinde",$strasse->gemeinde_id);
|
$gemeinde = Layout::getMfValuecacheObject("ADBGemeinde",$strasse->gemeinde_id);
|
||||||
@@ -29,8 +36,14 @@ while($data = mysqli_fetch_object($res)):
|
|||||||
$freigabe = "";
|
$freigabe = "";
|
||||||
}
|
}
|
||||||
$unit_count = $data->unit_count;
|
$unit_count = $data->unit_count;
|
||||||
|
|
||||||
|
$statusflags = [];
|
||||||
|
foreach($hausnummer->statusflags as $sflag) {
|
||||||
|
$statusflags[$sflag->code] = $sflag->value->value ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<?=$data->id?>;"<?=$data->extref?>";<?=$data->adrcd?>;"<?=$data->oaid?>";"<?=$status->code?>";"<?=$status->name?>";"<?=$netzgebiet->extref?>";"<?=$netzgebiet->name?>";"<?=$data->rimo_id?>";<?=$gemeinde->kennziffer?>;"<?=$gemeinde->name?>";<?=$ortschaft->kennziffer?>;"<?=$ortschaft->name?>";"<?=$plz->plz?>";<?=$strasse->kennziffer?>;"<?=$strasse->name?>";"<?=$data->hausnummer?>";"<?=$data->grund_nr?>";<?=$data->gps_lat?>;<?=$data->gps_long?>;<?=$data->rollout?>;"<?=$data->rollout_info?>";"<?=$freigabe?>";<?=$unit_count?>;"<?=$data->gdaeigenschaft?>";"<?=$data->meridian?>";<?=$data->rw?>;<?=$data->hw?>;<?=$data->visibility?>
|
<?=$data->id?>;"<?=$data->extref?>";<?=$data->adrcd?>;"<?=$data->oaid?>";"<?=$status->code?>";"<?=$status->name?>";<?=implode(";", $statusflags)?>;"<?=$netzgebiet->extref?>";"<?=$netzgebiet->name?>";"<?=$data->rimo_id?>";<?=$gemeinde->kennziffer?>;"<?=$gemeinde->name?>";<?=$ortschaft->kennziffer?>;"<?=$ortschaft->name?>";"<?=$plz->plz?>";<?=$strasse->kennziffer?>;"<?=$strasse->name?>";"<?=$data->hausnummer?>";"<?=$data->grund_nr?>";<?=$data->gps_lat?>;<?=$data->gps_long?>;<?=$data->rollout?>;"<?=$data->rollout_info?>";"<?=$freigabe?>";<?=$unit_count?>;"<?=$data->gdaeigenschaft?>";"<?=$data->meridian?>";<?=$data->rw?>;<?=$data->hw?>;<?=$data->visibility?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
$i++;
|
$i++;
|
||||||
|
|||||||
@@ -22,6 +22,14 @@
|
|||||||
|
|
||||||
<div class="card bg-light">
|
<div class="card bg-light">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
<div class="alert alert-info">
|
||||||
|
<p>
|
||||||
|
<strong>Werden Statusflags importiert, muss die Überschrift im CSV-File vorhanden sein!</strong><br />
|
||||||
|
Statusflags können in beliebiger Reihenfolge angegeben werden, die Positionen müssen aber in Kopfzeile und Datenzeilen übereinstimmen.<br/>
|
||||||
|
Nur zu ändernde Statusflags müssen angeführt werden.<br/>
|
||||||
|
Statusflags können 1 (=gesetzt), 0 (=nicht gesetzt) oder leer sein. Ist das Feld leer, wird der Wert des Flags nicht verändert.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
<h4 class="header-title mb-2">Statusupdates importieren</h4>
|
<h4 class="header-title mb-2">Statusupdates importieren</h4>
|
||||||
|
|
||||||
<form class="form-horizontal" method="post" action="<?=self::getUrl("Preorder", "saveStatusupdateimport")?>" enctype="multipart/form-data">
|
<form class="form-horizontal" method="post" action="<?=self::getUrl("Preorder", "saveStatusupdateimport")?>" enctype="multipart/form-data">
|
||||||
@@ -32,7 +40,15 @@
|
|||||||
<label class="col-lg-2 col-form-label" for="statusupdate_csv">Statusupdate CSV</label>
|
<label class="col-lg-2 col-form-label" for="statusupdate_csv">Statusupdate CSV</label>
|
||||||
<div class="col-lg-10">
|
<div class="col-lg-10">
|
||||||
<input type="file" class="form-control" name="statusupdate_csv" />
|
<input type="file" class="form-control" name="statusupdate_csv" />
|
||||||
<small>Format: <span class="text-monospace">OAID;Neuer Status Code</span></small>
|
<small>
|
||||||
|
Format: <span class="text-monospace">OAID;Neuer Status Code;[flag;...]</span><br />
|
||||||
|
Beispiel:<br />
|
||||||
|
<span class="text-monospace">
|
||||||
|
OAID;new_code;141;145;150;200;242<br />
|
||||||
|
HJR47J;200;1;0;;;
|
||||||
|
</span>
|
||||||
|
</small>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,14 @@ header("Content-type: text/csv");
|
|||||||
if(!$no_filename) {
|
if(!$no_filename) {
|
||||||
header('Content-disposition: attachment; filename="preorder-export-' . date('Y-m-d_H-i-s') . '.csv"');
|
header('Content-disposition: attachment; filename="preorder-export-' . date('Y-m-d_H-i-s') . '.csv"');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$status_flags_header = [];
|
||||||
|
foreach(PreorderStatusflagModel::getAll() as $sflag) {
|
||||||
|
$status_flags_header[$sflag->code] = $sflag->code;
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
Kampagne;Netzgebiet ID;Netzgebiet;Extref;Bestellcode;Gutscheincodes;OAID;Bestelldatum;Bestelltyp;Status Code; Status Name;Anschlusstyp;GWR Adresscode;Meridian;RW;HW;Anschluss Strasse;Anschluss Hausnummer;Anschluss PLZ;Anschluss Ort;Anschluss Wohneinheit;GPS Breite;GPS Länge;Anzahl Anschlüsse;Kunde Firma;Kunde UID;Kunde Vorname;Kunde Nachname;Kunde Strasse;Kunde PLZ;Kunde Ort;Kunde Telefon;Kunde Email;Partner;CIF Token;Cif Url; Cif Cable Url;Addon Lehrverrohrung Grundstück;Addon Hausverkabelung;BEP festgelegt;Starterpaket erhalten;Erstellt;Letzte Bearbeitung
|
Kampagne;Netzgebiet ID;Netzgebiet;Extref;Bestellcode;Gutscheincodes;OAID;Bestelldatum;Bestelltyp;Status Code;Status Name;"<?=implode('";"', $status_flags_header)?>";Anschlusstyp;GWR Adresscode;Meridian;RW;HW;Anschluss Strasse;Anschluss Hausnummer;Anschluss PLZ;Anschluss Ort;Anschluss Wohneinheit;GPS Breite;GPS Länge;Anzahl Anschlüsse;Kunde Firma;Kunde UID;Kunde Vorname;Kunde Nachname;Kunde Strasse;Kunde PLZ;Kunde Ort;Kunde Telefon;Kunde Email;Partner;CIF Token;Cif Url;Cif Cable Url;Addon Lehrverrohrung Grundstück;Addon Hausverkabelung;BEP festgelegt;Starterpaket erhalten;Erstellt;Letzte Bearbeitung
|
||||||
<?php
|
<?php
|
||||||
$line = 0;
|
$line = 0;
|
||||||
|
|
||||||
@@ -26,6 +32,11 @@ while($data = mysqli_fetch_object($res)):
|
|||||||
$partner = Layout::getMfValuecacheObject("Address", $data->partner_id);
|
$partner = Layout::getMfValuecacheObject("Address", $data->partner_id);
|
||||||
$preorder = Layout::getMfValuecacheObject("Preorder", $data->id);
|
$preorder = Layout::getMfValuecacheObject("Preorder", $data->id);
|
||||||
|
|
||||||
|
$statusflags = [];
|
||||||
|
foreach($preorder->statusflags as $sflag) {
|
||||||
|
$statusflags[$sflag->code] = $sflag->value->value ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
$discounts = [];
|
$discounts = [];
|
||||||
if(is_array($preorder->discounts) && count($preorder->discounts)) {
|
if(is_array($preorder->discounts) && count($preorder->discounts)) {
|
||||||
foreach($preorder->discounts as $discount) {
|
foreach($preorder->discounts as $discount) {
|
||||||
@@ -76,7 +87,7 @@ while($data = mysqli_fetch_object($res)):
|
|||||||
if($data->uid == "string") $data->uid = "";
|
if($data->uid == "string") $data->uid = "";
|
||||||
|
|
||||||
?>
|
?>
|
||||||
"<?=$campaign->name?>";"<?=$netzgebiet->extref?>";"<?=$netzgebiet->name?>";"<?=$data->extref?>";"<?=$data->ucode?>";"<?=implode(", ",$discounts)?>";"<?=$wohneinheit->oaid?>";"<?=($data->order_date) ? date("d.m.Y",$data->order_date) : ""?>";"<?=__($data->type,"preorder")?>";"<?=$status->code?>";"<?=$status->name?>";"<?=__($data->connection_type,"preorder")?>";"<?=$adrcd?>";"<?=$hausnummer->meridian?>";"<?=$hausnummer->rw?>";"<?=$hausnummer->hw?>";"<?=$strasse->name?>";"<?=$hausnummer->hausnummer?>";"<?=$plz->plz?>";"<?=$ortschaft->name?>";"<?=$unit_data?>";"<?=$hausnummer->gps_lat?>";"<?=$hausnummer->gps_long?>";<?=$data->connection_count?>;"<?=$data->company?>";"<?=$data->uid?>";"<?=$data->firstname?>";"<?=$data->lastname?>";"<?=$data->street?>";"<?=$data->zip?>";"<?=$data->city?>";"<?=$data->phone?>";"<?=$data->email?>";"<?=$partner->getCompanyOrName()?>";"<?=$data->ciftoken?>";"<?=$data->cifurl?>";"<?=$data->cifcableurl?>";<?=$addon_property?>;<?=$addon_inhouse?>;<?=($bep) ? "1" : "0"?>;<?=($inhouse) ? "1" : "0"?>;"<?=date("Y-m-d H:i:s",$data->create)?>";"<?=date("Y-m-d H:i:s",$data->edit)?>"
|
"<?=$campaign->name?>";"<?=$netzgebiet->extref?>";"<?=$netzgebiet->name?>";"<?=$data->extref?>";"<?=$data->ucode?>";"<?=implode(", ",$discounts)?>";"<?=$wohneinheit->oaid?>";"<?=($data->order_date) ? date("d.m.Y",$data->order_date) : ""?>";"<?=__($data->type,"preorder")?>";"<?=$status->code?>";"<?=$status->name?>";<?=implode(";", $statusflags)?>;"<?=__($data->connection_type,"preorder")?>";"<?=$adrcd?>";"<?=$hausnummer->meridian?>";"<?=$hausnummer->rw?>";"<?=$hausnummer->hw?>";"<?=$strasse->name?>";"<?=$hausnummer->hausnummer?>";"<?=$plz->plz?>";"<?=$ortschaft->name?>";"<?=$unit_data?>";"<?=$hausnummer->gps_lat?>";"<?=$hausnummer->gps_long?>";<?=$data->connection_count?>;"<?=$data->company?>";"<?=$data->uid?>";"<?=$data->firstname?>";"<?=$data->lastname?>";"<?=$data->street?>";"<?=$data->zip?>";"<?=$data->city?>";"<?=$data->phone?>";"<?=$data->email?>";"<?=$partner->getCompanyOrName()?>";"<?=$data->ciftoken?>";"<?=$data->cifurl?>";"<?=$data->cifcableurl?>";<?=$addon_property?>;<?=$addon_inhouse?>;<?=($bep) ? "1" : "0"?>;<?=($inhouse) ? "1" : "0"?>;"<?=date("Y-m-d H:i:s",$data->create)?>";"<?=date("Y-m-d H:i:s",$data->edit)?>"
|
||||||
<?php
|
<?php
|
||||||
$line++;
|
$line++;
|
||||||
if($line % 1000 === 0) {
|
if($line % 1000 === 0) {
|
||||||
|
|||||||
@@ -222,7 +222,24 @@
|
|||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Status</th>
|
<th>Status</th>
|
||||||
<td id="preorder-detail-building-status-<?=$preorder->id?>" class="text-monospace"><?=$preorder->adb_hausnummer->status->code?> - <?=$preorder->adb_hausnummer->status->name?></td>
|
<td id="preorder-detail-building-status-<?=$preorder->id?>" class="text-monospace"><?=$preorder->adb_hausnummer->status->code?> - <?=$preorder->adb_hausnummer->status->name?></td>
|
||||||
|
</tr><tr>
|
||||||
|
<th>Statusflags</th>
|
||||||
|
<td>
|
||||||
|
<table class="table table-sm table-bordered table-striped bg-white">
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<th>Code</th>
|
||||||
|
<th>Text</th>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($preorder->adb_hausnummer->statusflags as $flag): ?>
|
||||||
|
<tr>
|
||||||
|
<td class="text-center"><?=($flag->value->value) ? "<i class='fas fa-check text-success'></i>" : ""?></td>
|
||||||
|
<td><?=$flag->code?></td>
|
||||||
|
<td><?=$flag->name?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Extref</th>
|
<th>Extref</th>
|
||||||
<td class="text-monospace"><?=$preorder->adb_hausnummer->extref?></td>
|
<td class="text-monospace"><?=$preorder->adb_hausnummer->extref?></td>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ class ADBHausnummer extends mfBaseModel {
|
|||||||
private $strasse;
|
private $strasse;
|
||||||
private $plz;
|
private $plz;
|
||||||
private $status;
|
private $status;
|
||||||
|
private $statusflags;
|
||||||
private $freigaben = [];
|
private $freigaben = [];
|
||||||
private $wohneinheiten = [];
|
private $wohneinheiten = [];
|
||||||
|
|
||||||
@@ -173,6 +174,18 @@ class ADBHausnummer extends mfBaseModel {
|
|||||||
$this->status = new ADBStatus($this->status_id);
|
$this->status = new ADBStatus($this->status_id);
|
||||||
return $this->status;
|
return $this->status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($name == "statusflags") {
|
||||||
|
$flags = [];
|
||||||
|
foreach(ADBStatusflagModel::getAll() as $flag) {
|
||||||
|
$flag->hausnummer_id = $this->id;
|
||||||
|
$flags[$flag->id] = $flag;
|
||||||
|
}
|
||||||
|
if(count($flags)) {
|
||||||
|
$this->statusflags = $flags;
|
||||||
|
}
|
||||||
|
return $this->statusflags;
|
||||||
|
}
|
||||||
|
|
||||||
$classname = ucfirst($name);
|
$classname = ucfirst($name);
|
||||||
$idfield = $name."_id";
|
$idfield = $name."_id";
|
||||||
|
|||||||
@@ -1,9 +1,64 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
class ADBStatusflag extends mfBaseModel {
|
class ADBStatusflag extends mfBaseModel {
|
||||||
|
private $value;
|
||||||
|
public $hausnummer_id;
|
||||||
|
|
||||||
|
|
||||||
public function init() {
|
public function init() {
|
||||||
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||||
$this->table = "Statusflag";
|
$this->table = "Statusflag";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getProperty($name) {
|
||||||
|
if($this->$name == null) {
|
||||||
|
|
||||||
|
if($name == "value") {
|
||||||
|
if(!$this->hausnummer_id) return null;
|
||||||
|
$value = ADBHausnummerStatusflagValueModel::getFirst(["hausnummer_id" => $this->hausnummer_id, "flag_id" => $this->id]);
|
||||||
|
if(!$value) {
|
||||||
|
$value = ADBHausnummerStatusflagValueModel::create([
|
||||||
|
"hausnummer_id" => $this->hausnummer_id,
|
||||||
|
"flag_id" => $this->id
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$this->value = $value;
|
||||||
|
return $this->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($name == "creator") {
|
||||||
|
$user = mfValuecache::singleton()->get("Worker-id-".$this->create_by);
|
||||||
|
if($user) {
|
||||||
|
$this->creator = $user;
|
||||||
|
return $this->creator;
|
||||||
|
}
|
||||||
|
$this->creator = new User($this->create_by);
|
||||||
|
if($this->creator->id) {
|
||||||
|
mfValuecache::singleton()->set("Worker-id-".$this->create_by, $this->creator);
|
||||||
|
}
|
||||||
|
return $this->creator;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($name == "editor") {
|
||||||
|
$this->editor = new User($this->edit_by);
|
||||||
|
return $this->editor;
|
||||||
|
}
|
||||||
|
|
||||||
|
$classname = ucfirst($name);
|
||||||
|
$idfield = $name."_id";
|
||||||
|
$this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-".$this->$idfield);
|
||||||
|
if(!$this->$name) {
|
||||||
|
$this->$name = new $classname($this->$idfield);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->$name->id) {
|
||||||
|
mfValuecache::singleton()->set("mfObjectmodel-$name-".$this->$name->id, $this->$name);
|
||||||
|
return $this->$name;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->$name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -50,6 +50,7 @@ class Preorder extends mfBaseModel {
|
|||||||
mfValuecache::singleton()->set("preorder-save-nesting-level-" . $this->id, $nesting_level);
|
mfValuecache::singleton()->set("preorder-save-nesting-level-" . $this->id, $nesting_level);
|
||||||
|
|
||||||
if($nesting_level > 1) {
|
if($nesting_level > 1) {
|
||||||
|
$this->log->debug(__METHOD__.": (Preorder ".$this->id.") Nesting level limit reached ($nesting_level) -> aborting");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,7 +74,10 @@ class Preorder extends mfBaseModel {
|
|||||||
$this->cascadeStatus();
|
$this->cascadeStatus();
|
||||||
// Cascade status changes down all active preorders with the same hausnummer
|
// Cascade status changes down all active preorders with the same hausnummer
|
||||||
$this->cascadeStatusToPreorders();
|
$this->cascadeStatusToPreorders();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function resetSaveNesting() {
|
||||||
|
mfValuecache::singleton()->delete("preorder-save-nesting-level-" . $this->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createHistoryEntry() {
|
public function createHistoryEntry() {
|
||||||
@@ -158,7 +162,7 @@ class Preorder extends mfBaseModel {
|
|||||||
* Cascade status changes down to adb_hausnummer and adb_wohneinheit
|
* Cascade status changes down to adb_hausnummer and adb_wohneinheit
|
||||||
*/
|
*/
|
||||||
public function cascadeStatus() {
|
public function cascadeStatus() {
|
||||||
|
$this->log->debug(__METHOD__. " entered");
|
||||||
/*
|
/*
|
||||||
* defines status alignments of preorder status to hausnummer (h) and wohneinheit (w)
|
* defines status alignments of preorder status to hausnummer (h) and wohneinheit (w)
|
||||||
* if h or w are greater than defined here, don't change them
|
* if h or w are greater than defined here, don't change them
|
||||||
|
|||||||
@@ -780,12 +780,36 @@ class PreorderController extends mfBaseController {
|
|||||||
$invalidcode = 0;
|
$invalidcode = 0;
|
||||||
$nochange = 0;
|
$nochange = 0;
|
||||||
$saved = 0;
|
$saved = 0;
|
||||||
|
$flags_saved = 0;
|
||||||
|
|
||||||
|
$statusflags = [];
|
||||||
|
|
||||||
$filename = $file->getFullPath();
|
$filename = $file->getFullPath();
|
||||||
$input = fopen($filename, "r");
|
$input = fopen($filename, "r");
|
||||||
while($csv = fgetcsv($input, 0, ";")) {
|
while($csv = fgetcsv($input, 0, ";")) {
|
||||||
$i++;
|
$i++;
|
||||||
if($i == 1 && $headline_included) continue;
|
|
||||||
|
if($i == 1 && $headline_included) {
|
||||||
|
// get statusflag order in header
|
||||||
|
$col = 2;
|
||||||
|
while(array_key_exists($col, $csv) && trim($csv[$col])) {
|
||||||
|
$code = trim($csv[$col]);
|
||||||
|
if(!is_numeric($code)) {
|
||||||
|
$this->layout()->setFlash("Ungültige Überschrift für Spalte ".++$col, "error");
|
||||||
|
$this->redirect("Preorder", "statusupdateimport");
|
||||||
|
}
|
||||||
|
|
||||||
|
$sflag = PreorderStatusflagModel::getFirst(["code" => $code]);
|
||||||
|
if(!$sflag) {
|
||||||
|
$this->layout()->setFlash("Statusflag mit Code $code nicht gefunden", "error");
|
||||||
|
$this->redirect("Preorder", "statusupdateimport");
|
||||||
|
}
|
||||||
|
$sflag->col = $col;
|
||||||
|
$statusflags[$code] = $sflag;
|
||||||
|
$col++;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(!trim($csv[0])) {
|
if(!trim($csv[0])) {
|
||||||
continue;
|
continue;
|
||||||
@@ -813,23 +837,69 @@ class PreorderController extends mfBaseController {
|
|||||||
}
|
}
|
||||||
$preorder->status_id = $new_status->id;
|
$preorder->status_id = $new_status->id;
|
||||||
$preorder->save();
|
$preorder->save();
|
||||||
|
$preorder->resetSaveNesting();
|
||||||
$saved++;
|
$saved++;
|
||||||
} else {
|
} else {
|
||||||
$nochange++;
|
$nochange++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(count($statusflags)) {
|
||||||
|
foreach($statusflags as $code => $origin_sflag) {
|
||||||
|
$this->log->debug(__METHOD__.": $oaid - testing flag $code for update.");
|
||||||
|
$sflag = clone($origin_sflag);
|
||||||
|
$sflag->preorder_id = $preorder->id;
|
||||||
|
|
||||||
|
if(!$sflag->col) {
|
||||||
|
$this->layout()->setFlash("Kann Statusflagcode $code nicht zuordnen. Line $i col ".$sflag->col, "error");
|
||||||
|
$this->redirect("Preorder", "statusupdateimport");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!array_key_exists($sflag->col, $csv)) {
|
||||||
|
$this->log->debug(__METHOD__.": no col.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$value = trim($csv[$sflag->col]);
|
||||||
|
if(!strlen($value)) {
|
||||||
|
$this->log->debug(__METHOD__.": no val");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($value) {
|
||||||
|
$sflag->value->value = 1;
|
||||||
|
} else {
|
||||||
|
$sflag->value->value = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->log->debug(__METHOD__.": $oaid - saving flag value $code value: ".$sflag->value->value." ($value)");
|
||||||
|
$sflag->value->save();
|
||||||
|
|
||||||
|
$flags_saved++;
|
||||||
|
//$this->log->debug(__METHOD__.": $oaid - loading preorder again");
|
||||||
|
}
|
||||||
|
|
||||||
|
$preorder = PreorderModel::getFirstActive(["oaid" => $oaid]);
|
||||||
|
$preorder->resetSaveNesting();
|
||||||
|
$preorder->afterSave();
|
||||||
|
$preorder = PreorderModel::getFirstActive(["oaid" => $oaid]);
|
||||||
|
$preorder->resetSaveNesting();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = "Import erfolgreich. $saved Statusupdates importiert";
|
$message = "Import erfolgreich. $saved Statusupdates importiert";
|
||||||
|
if($flags_saved) {
|
||||||
|
$message .= "<br />$flags_saved Statusflags upgedatet";
|
||||||
|
}
|
||||||
if($notfound) {
|
if($notfound) {
|
||||||
$message .= "<br />$notfound Bestellungen nicht gefunden";
|
$message .= "<br />$notfound Bestellungen nicht gefunden";
|
||||||
}
|
}
|
||||||
if($forbidden) {
|
if($forbidden) {
|
||||||
$message .= "<br />$forbidden Bestellungen in falschem Netzgebiet";
|
$message .= "<br />$forbidden Bestellungen in falschem Netzgebiet";
|
||||||
}
|
}
|
||||||
if($nochange) {
|
/*if($nochange) {
|
||||||
$message .= "<br />$nochange Bestelllungen haben bereits den neuen Status";
|
$message .= "<br />$nochange Bestelllungen haben bereits den neuen Status";
|
||||||
}
|
}*/
|
||||||
if($invalidcode) {
|
if($invalidcode) {
|
||||||
$message .= "<br />$invalidcode ungültige Statuscodes";
|
$message .= "<br />$invalidcode ungültige Statuscodes";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,11 @@ class mfValuecache {
|
|||||||
public function getCache() {
|
public function getCache() {
|
||||||
return $this->cache;
|
return $this->cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function delete($key) {
|
||||||
|
unset($this->cache[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
public function getMfObject($objectname, $id) {
|
public function getMfObject($objectname, $id) {
|
||||||
$object = $this->get("mfObjectmodel-$objectname-".$id);
|
$object = $this->get("mfObjectmodel-$objectname-".$id);
|
||||||
if(!$object) {
|
if(!$object) {
|
||||||
|
|||||||
Reference in New Issue
Block a user