diff --git a/Layout/default/Preorder/Form.php b/Layout/default/Preorder/Form.php index ed1736ac2..203d59c7b 100644 --- a/Layout/default/Preorder/Form.php +++ b/Layout/default/Preorder/Form.php @@ -23,7 +23,7 @@

id) ? "Vorbestellung bearbeiten" : "Neue Vorbestellung"?>

-
"> + $campaign->id])?>">
@@ -76,7 +76,7 @@
- +
@@ -93,9 +93,9 @@ - street?>
- zip?> city?>
- Wohneinheiten: units) ? $preorder->units : 1?> + building->street?>
+ building->zip?> building->city?>
+ Wohneinheiten: building->units) ? $preorder->building->units : 1?> building->code): ?>
building->code?> @@ -127,7 +127,19 @@
- + +
+ +
+
+ +
+
+
- +
@@ -156,13 +168,13 @@
- +
- +
@@ -170,7 +182,7 @@
- +
@@ -178,66 +190,69 @@
- +
- +
- +
- +
- +
- +
- +
- +
- +
- -
- - - - +
- - +
+
+
+ +
+ +
+
+
+
@@ -260,7 +275,18 @@ $(document).ready(function() { $('#building-search-results-section').hide(); - $('#building-search-selected').hide(); + building_id): ?> + $('#building-search-selected').hide(); + + + $("#product_id").select2({ + allowClear: true, + placeholder: "" + }); + $("#partner_id").select2({ + allowClear: true, + placeholder: "" + }); /********************** * Event handler @@ -306,8 +332,6 @@ } }); - - }); function listSearchresults(data) { @@ -324,7 +348,7 @@ data.buildings.forEach(function(b) { var line = ''; - line += ''; + line += ''; line += "" + b.street + ""; line += "" + b.zip + ""; line += "" + b.city + ""; @@ -351,27 +375,27 @@ } function selectBuilding(id) { - if($('input[name=building_id][value=' + id + ']').prop('checked')) { - $('input[name=building_id][value=' + id + ']').prop('checked', false); + if($('input[name=building_result_check][value=' + id + ']').prop('checked')) { + $('input[name=building_result_check][value=' + id + ']').prop('checked', false); $('#building-search-selected .label').removeClass("font-weight-bold").text("Bitte auswählen..."); $('#building-search-selected .check-mark i').removeClass().addClass("fas fa-question text-warning"); } else { // check selected checkbox and uncheck all others - $('input[name=building_id][value=' + id + ']').prop('checked', true); - $('input[name=building_id]').each(function() { + $('input[name=building_result_check][value=' + id + ']').prop('checked', true); + $('input[name=building_result_check]').each(function() { if($(this).val() != id) { $(this).prop('checked', false); } }); // write selected buildings address - var street = $('input[name=building_id][value=' + id + ']').data("street"); - var zip = $('input[name=building_id][value=' + id + ']').data("zip"); - var city = $('input[name=building_id][value=' + id + ']').data("city"); - var code = $('input[name=building_id][value=' + id + ']').data("code"); - var oan_id = $('input[name=building_id][value=' + id + ']').data("oanid"); - var units = $('input[name=building_id][value=' + id + ']').data("units"); + var street = $('input[name=building_result_check][value=' + id + ']').data("street"); + var zip = $('input[name=building_result_check][value=' + id + ']').data("zip"); + var city = $('input[name=building_result_check][value=' + id + ']').data("city"); + var code = $('input[name=building_result_check][value=' + id + ']').data("code"); + var oan_id = $('input[name=building_result_check][value=' + id + ']').data("oanid"); + var units = $('input[name=building_result_check][value=' + id + ']').data("units"); $('input[name=street]').val(street); $('input[name=zip]').val(zip); @@ -393,6 +417,7 @@ $('#building-search-selected .check-mark i').removeClass().addClass("fas fa-check text-success"); $('#building-search-selected').show(); + $('#building_id').val(id); showPreorderForm(); diff --git a/Layout/default/Preorder/Index.php b/Layout/default/Preorder/Index.php index a07eee6e4..7ae50bed4 100644 --- a/Layout/default/Preorder/Index.php +++ b/Layout/default/Preorder/Index.php @@ -27,7 +27,7 @@

Liste aller Vorbestellungenname : ""?>

@@ -38,18 +38,20 @@ - - + + - + - - + + + +
Adresse Partner ID AnschlusserstelltbearbeitetErstelltZuletzt bearbeitet
campaign->name?>type?>type, "preorder")?> company) ? $preorder->company : $preorder->firstname." ".$preorder->lastname?>street?>
zip?> city?>
partner->getNameOrCompany()?>building->street?>
building->zip?> building->city?>
partner_id) ? $preorder->partner->getCompanyOrName() : ""?> termination) ? $preorder->termination->code : ""?>create)?>edit)?> $camp->id])?>"> $camp->id])?>" class="text-danger" onclick="if(!confirm('Vorbestellkampagne wirklich löschen?')) return false;" title="Vorbestellkampagne Löschen"> diff --git a/application/Preorder/Preorder.php b/application/Preorder/Preorder.php index 6c689bba8..4b34a2691 100644 --- a/application/Preorder/Preorder.php +++ b/application/Preorder/Preorder.php @@ -1,8 +1,10 @@ $name == null) { @@ -16,11 +18,24 @@ class Preorder extends mfBaseModel { $this->partner = mfValuecache::singleton()->get("mfObjectmodel-Address-".$this->partner_id); if(!$this->partner) { $this->partner = new Address($this->partner_id); - mfValuecache::singleton()->set("mfObjectmodel-Address-".$this->partner_id, $this->partner); + if($this->partner->id) { + mfValuecache::singleton()->set("mfObjectmodel-Address-".$this->partner_id, $this->partner); + } } return $this->partner; } + if($name == "building") { + $this->building = mfValuecache::singleton()->get("mfObjectmodel-Building-".$this->building_id); + if(!$this->building) { + $this->building = new Building($this->building_id); + if($this->building->id) { + mfValuecache::singleton()->set("mfObjectmodel-Building-".$this->building_id, $this->building); + } + } + return $this->building; + } + if($name == "creator") { $user = mfValuecache::singleton()->get("Worker-id-".$this->create_by); if($user) { diff --git a/application/Preorder/PreorderController.php b/application/Preorder/PreorderController.php index 9a0de2b0d..e4d7cb58d 100644 --- a/application/Preorder/PreorderController.php +++ b/application/Preorder/PreorderController.php @@ -59,6 +59,146 @@ class PreorderController extends mfBaseController { } } $this->layout()->set("products", $products); + + $partners = AddressModel::search(['addresstype' => ['salespartner']]); + $this->layout()->set("partners", $partners); + } + + protected function saveAction() { + $r = $this->request; + var_dump($r); + + /* + * add or edit + */ + $id = $r->id; + if(is_numeric($id) && $id > 0) { + $mode = "edit"; + $preorder = new Preorder($id); + if(!$preorder->id) { + $this->layout()->setFlash("Vorbestellung nicht gefunden", "error"); + $this->redirect("Preordercampaign"); + } + } else { + $id = false; + $mode = "add"; + } + + /* + * data colletion + */ + $data = []; + $data['preordercampaign_id'] = $r->campaign_id; + $data['building_id'] = $r->building_id; + $data['termination_id'] = ($r->termination_id) ? $r->termination_id : null; + $data['product_id'] = $r->product_id; + + switch($r->type) { + case "interest": + $data['type'] = "interest"; + break; + case "provision": + $data['type'] = "provision"; + break; + case "order": + $data['type'] = "order"; + break; + } + + $data['price'] = $r->price; + $data['price_setup'] = $r->price_setup; + $data['price_nne'] = $r->price_nne; + $data['price_nbe'] = $r->price_nbe; + $data['billing_delay'] = $r->billing_delay; + $data['partner_id'] = $r->partner_id; + + $data['company'] = $r->company; + $data['uid'] = $r->uid; + $data['firstname'] = $r->firstname; + $data['lastname'] = $r->lastname; + $data['street'] = $r->street; + $data['zip'] = $r->zip; + $data['city'] = $r->city; + $data['phone'] = $r->phone; + $data['email'] = $r->email; + $data['note'] = $r->note; + + $data['edit_by'] = $this->me->id; + + if($mode == "add") { + $data['create_by'] = $this->me->id; + $preorder = PreorderModel::create($data); + } else { + $preorder->update($data); + } + + /* + * validation + */ + + $campaign = new Preordercampaign($preorder->preordercampaign_id); + if(!$campaign->id) { + $this->layout()->setFlash("Keine Kampagne ausgewählt!", "error"); + $this->redirect("Preordercampaign"); + } + + $product = new Product($data['product_id']); + if(!$product->id) { + $this->layout()->setFlash("Bitte Produkt auswählen!", "error"); + $this->layout()->set("preorder", $preorder); + $this->layout()->set("campaign", $campaign); + return $this->addAction(); + } + $preorder->billing_period = $product->billing_period; + if(!$this->me->isAdmin()) { + $preorder->price_nne = $product->price_nne; + $preorder->price_nbe = $product->price_nbe; + } + + + if(!strlen($preorder->price) + || !strlen($preorder->price_setup) + || !strlen($preorder->price_nne) + || !strlen($preorder->price_nbe) + || !strlen($preorder->price_nne)) { + $this->layout()->setFlash("Bitte alle benötigten Produktdaten ausfüllen!", "error"); + $this->layout()->set("preorder", $preorder); + $this->layout()->set("campaign", $campaign); + return $this->addAction(); + } + + if(!strlen($preorder->firstname) + || !strlen($preorder->lastname) + || !strlen($preorder->street) + || !strlen($preorder->zip) + || !strlen($preorder->city)) { + $this->layout()->setFlash("Bitte alle benötigten Kundendaten ausfüllen!", "error"); + $this->layout()->set("preorder", $preorder); + $this->layout()->set("campaign", $campaign); + return $this->addAction(); + } + + + + //var_dump($preorder);exit; + + + /* + * save + */ + $new_id = $preorder->save(); + if(!$new_id) { + $this->layout()->setFlash("Fehler beim Speichern", "error"); + $this->layout()->set("preorder", $preorder); + return $this->addAction(); + } + + + $qs = ['filter' => ['campaign_id' => $preorder->preordercampaign_id]]; + $qs = http_build_query($qs); + + $this->layout()->setFlash("Vorbestellung erfolgreich gespeichert!", "success"); + $this->redirect("Preorder", "Index", $qs); } diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php index b00174e34..91dfa6c46 100644 --- a/application/Preorder/PreorderModel.php +++ b/application/Preorder/PreorderModel.php @@ -1,21 +1,34 @@ debug("Loading language file for __() function"); + include(BASEDIR . "/lang/de.php"); + } + + if($prefix) { + $string = "$prefix.$string"; + } + if (array_key_exists($string, $lang['de'])) { return $lang['de'][$string]; }