diff --git a/Layout/default/AddressDB/export.csv.php b/Layout/default/AddressDB/export.csv.php
index 34612b658..a7aca833e 100644
--- a/Layout/default/AddressDB/export.csv.php
+++ b/Layout/default/AddressDB/export.csv.php
@@ -3,7 +3,7 @@ ob_end_flush();
header("Content-type: text/csv");
header('Content-disposition: attachment; filename="addressdb-export-'.date('Y-m-d_H-i-s').'.csv"');
?>
-AddressDB_ID;Extref;Adrcd;OAID;Netzgebiet_Extref;Netzgebiet;GKZ;Gemeinde;OKZ;Ortschaft;PLZ;SKZ;Strasse;Hausnummer;Grundstueck;GPS Breite; GPS Laenge;Rollout;Rollout_Info;Freigabe;Nutzungseinheiten;GDA-Eigenschaft;Meridian;RW;HW
+AddressDB_ID;Extref;Adrcd;OAID;Status Code; Status Name;Netzgebiet_Extref;Netzgebiet;GKZ;Gemeinde;OKZ;Ortschaft;PLZ;SKZ;Strasse;Hausnummer;Grundstueck;GPS Breite; GPS Laenge;Rollout;Rollout_Info;Freigabe;Nutzungseinheiten;GDA-Eigenschaft;Meridian;RW;HW
gemeinde_id);
$ortschaft = Layout::getMfValuecacheObject("ADBOrtschaft", $data->ortschaft_id);
$plz = Layout::getMfValuecacheObject("ADBPlz", $data->plz_id);
+ $status = Layout::getMfValuecacheObject("ADBStatus", $data->status_id);
$freigabe_array = json_decode($data->freigabe);
if(is_array($freigabe_array)) {
$freigabe = join(", ", $freigabe_array);
@@ -21,7 +22,7 @@ while($data = mysqli_fetch_object($res)):
}
$unit_count = $data->unit_count;
?>
-=$data->id?>;"=$data->extref?>";=$data->adrcd?>;"=$data->oaid?>";"=$netzgebiet->extref?>";"=$netzgebiet->name?>";=$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->id?>;"=$data->extref?>";=$data->adrcd?>;"=$data->oaid?>";"=$status->code?>";"=$status->name?>";"=$netzgebiet->extref?>";"=$netzgebiet->name?>";=$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?>
-Kampagne;Netzgebiet ID;Netzgebiet;Extref;Bestellcode;OAID;Bestelltyp;Status;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;Addon Lehrverrohrung Grundstück;Addon Hausverkabelung;BEP festgelegt;Starterpaket erhalten;Erstellt;Letzte Bearbeitung
+Kampagne;Netzgebiet ID;Netzgebiet;Extref;Bestellcode;OAID;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;Addon Lehrverrohrung Grundstück;Addon Hausverkabelung;BEP festgelegt;Starterpaket erhalten;Erstellt;Letzte Bearbeitung
uid == "string") $data->uid = "";
?>
-"=$campaign->name?>";"=$netzgebiet->extref?>";"=$netzgebiet->name?>";"=$data->extref?>";"=$data->ucode?>";"=$wohneinheit->oaid?>";"=__($data->type,"preorder")?>";"=$status->name?>";"=__($data->connection_type,"preorder")?>";"=$hausnummer->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()?>";=$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?>";"=$wohneinheit->oaid?>";"=__($data->type,"preorder")?>";"=$status->code?>";"=$status->name?>";"=__($data->connection_type,"preorder")?>";"=$hausnummer->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()?>";=$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)?>"
-
+
+
-
- Details
- Adressdetails
@@ -23,6 +24,7 @@
+
Allgemein
@@ -367,6 +369,16 @@
var value = $("#preorder-detail-status-" + pid + "-input select").val();
+ //console.log("add opacity-5 to ")
+ $("#preorder-" + pid + "-body").addClass("opacity-5");
+ $("#preorder-" + pid + "-body .loader-big").show();
+
+ // reset loading overlay if request times out
+ setTimeout(() => {
+ $("#preorder-" + pid + "-body").removeClass("opacity-5");
+ $("#preorder-" + pid + "-body .loader-big").hide();
+ }, 5000);
+
$.post("=self::getUrl("Preorder","Api")?>",
{
'do': "updateStatus",
@@ -375,7 +387,32 @@
},
function(success) {
if(success.status == "OK") {
- var update = success.result.update;
+ var updates = success.result.updates;
+ //console.log(updates);
+
+ updates.forEach(function(u) {
+ //console.log(u);
+ // update detail status text
+ $("#preorder-detail-status-" + u.id + "-statustext").text(u.code + " - " + u.text);
+ $("#preorder-detail-status-" + u.id + "-text").addClass("text-success");
+ setTimeout(() => { $("#preorder-detail-status-" + u.id + "-text").removeClass("text-success") }, 1500);
+
+ // update list status text
+ $("#preorder-" + u.id + " .status").text(u.code + " - " + u.text);
+ $("#preorder-" + u.id + " .status").addClass("text-success");
+ setTimeout(() => { $("#preorder-" + u.id + " .status").removeClass("text-success") }, 1500);
+
+ // update status id data attribute
+ $("#preorder-detail-status-" + u.id + "-text").data("status-id", u.sid);
+
+ if(u.bcode) {
+ $("#preorder-detail-building-status-" + u.id).text(u.bcode + " - " + u.btext);
+ }
+ if(u.ucode) {
+ $("#preorder-detail-unit-status-" + u.id).text(u.ucode + " - " + u.utext);
+ }
+ });
+ /*
if("preorder" in update) {
// update detail status text
$("#preorder-detail-status-" + pid + "-statustext").text(update.preorder.status.code + " - " + update.preorder.status.text);
@@ -399,10 +436,13 @@
// update unit status text
$("#preorder-detail-unit-status-" + pid).text(update.unit.status.code + " - " + update.unit.status.text);
}
-
+ */
toggleStatusControl(pid);
}
+
+ $("#preorder-" + pid + "-body").removeClass("opacity-5");
+ $("#preorder-" + pid + "-body .loader-big").hide();
},
'json');
}
diff --git a/application/Preorder/Preorder.php b/application/Preorder/Preorder.php
index 7ba96d362..b19095962 100644
--- a/application/Preorder/Preorder.php
+++ b/application/Preorder/Preorder.php
@@ -50,6 +50,8 @@ class Preorder extends mfBaseModel {
// Cascade status changes down to adb_hausnummer and adb_wohneinheit
$this->cascadeStatus();
+ // Cascade status changes down all active preorders with the same hausnummer
+ $this->cascadeStatusToPreorders();
}
/*
@@ -138,6 +140,31 @@ class Preorder extends mfBaseModel {
}
+ private function cascadeStatusToPreorders() {
+ $status = new Preorderstatus($this->status_id);
+ if(!$status->id) {
+ return false;
+ }
+
+ if($this->adb_hausnummer_id) {
+ foreach(PreorderModel::search(["deleted" => 0, "adb_hausnummer_id" => $this->adb_hausnummer_id, " $status->code]) as $preorder) {
+ if($preorder->id == $this->id) continue;
+
+ /*if(!$preorder->status->code || !$status->code) {
+ $this->log->debug("Preorder->status->code". print_r($preorder->status, true));
+ $this->log->debug("Status->code". print_r($status->code, true));
+ }*/
+
+ if($preorder->status->code < $status->code && $status->code <= 244) {
+ $preorder->status_id = $this->status_id;
+ $preorder->save();
+ }
+ }
+ }
+
+ return true;
+ }
+
public function setOrCreateOaid($oaid_attributes = false) {
$campaign = new Preordercampaign($this->preordercampaign_id);
//var_dump($campaign);exit;
diff --git a/application/Preorder/PreorderController.php b/application/Preorder/PreorderController.php
index 09547595f..8563aabe7 100644
--- a/application/Preorder/PreorderController.php
+++ b/application/Preorder/PreorderController.php
@@ -966,8 +966,26 @@ class PreorderController extends mfBaseController {
$preorder->status_id = $status_id;
$preorder->save();
+ $update = [];
- $update = [
+ foreach(PreorderModel::search(["deleted" => 0, "adb_hausnummer_id" => $preorder->adb_hausnummer_id]) as $affected_preorder) {
+ $up = [
+ "id" => $affected_preorder->id,
+ "sid" => $affected_preorder->status_id,
+ "code" => $affected_preorder->status->code,
+ "text" => $affected_preorder->status->name,
+ "bcode" => $affected_preorder->adb_hausnummer->status->code,
+ "btext" => $affected_preorder->adb_hausnummer->status->name,
+ ];
+ if($preorder->adb_wohneinheit_id) {
+ $up["ucode"] = $affected_preorder->adb_wohneinheit->status->code;
+ $up["utext"] = $affected_preorder->adb_wohneinheit->status->name;
+ }
+
+ $update[] = $up;
+ }
+
+/* $update = [
"preorder" => [
"status" => [
"id" => $status->id,
@@ -996,8 +1014,8 @@ class PreorderController extends mfBaseController {
]
];
}
-
- return ["message" => "Status saved successfully", "id" => $preorder_id, "update" => $update];
+ */
+ return ["message" => "Status saved successfully", "id" => $preorder_id, "updates" => $update];
}
private function deleteWorkorderApi() {
diff --git a/public/assets/css/thetool.css b/public/assets/css/thetool.css
index a5a41851c..ffa9d2e6e 100644
--- a/public/assets/css/thetool.css
+++ b/public/assets/css/thetool.css
@@ -112,6 +112,17 @@ h1, h2, h3, h4, h5, h6 {
color: #0d6efd;
}
+.opacity-5 {
+ opacity: 0.5;
+}
+.opacity-3 {
+ opacity: 0.3;
+}
+
+.loader-big {
+ position: absolute; width: 100%; height: 100%; text-align: center; z-index: 1
+}
+
.contract-link {
}
diff --git a/public/assets/images/loader-big.gif b/public/assets/images/loader-big.gif
new file mode 100644
index 000000000..aaac0761f
Binary files /dev/null and b/public/assets/images/loader-big.gif differ