diff --git a/Layout/default/Building/Index.php b/Layout/default/Building/Index.php index d95264f5a..699fdeb3b 100644 --- a/Layout/default/Building/Index.php +++ b/Layout/default/Building/Index.php @@ -39,6 +39,7 @@ OAN ID Adresse Einheiten + Status @@ -53,6 +54,7 @@ zip?> city?> units?> + status->name)?> $building->id])?>"> $building->id])?>" class="text-danger" onclick="if(!confirm('Objekt wirklich löschen?')) return false;" title="Objekt Löschen"> @@ -79,6 +81,7 @@ Kontakt Telefon Email + Status terminations as $term): ?> @@ -145,6 +148,7 @@ + status->name)?> $term->id])?>" class="text-danger" onclick="if(!confirm('Objekt wirklich löschen?')) return false;" title="Objekt Löschen"> diff --git a/Layout/default/Order/Form.php b/Layout/default/Order/Form.php index e66240ece..c99213806 100644 --- a/Layout/default/Order/Form.php +++ b/Layout/default/Order/Form.php @@ -260,6 +260,27 @@ order_date) : date("d.m.Y")?>" /> + +
+
+

Verzögerte Herstellung

+
+ +
+ finish_after) : ""?>" /> +
+
+ +
+ +
+ +
+
+ +
+
+ @@ -377,8 +398,16 @@ - product->attributes) && $product->product->attributes[TT_ATTRIB_TERMINATION_REQUIRED_NAME] == 1): ?> -
+ product->attributes) && count($product->product->attributes)) + && (array_key_exists(TT_ATTRIB_TERMINATION_REQUIRED_NAME, $product->product->attributes) + && $product->product->attributes[TT_ATTRIB_TERMINATION_REQUIRED_NAME] == 1) + || $product->termination_id + ): ?> +
+ + - +
@@ -401,7 +430,7 @@
- +
@@ -477,7 +506,7 @@
- +
@@ -636,7 +665,15 @@ showWeekDays: true, todayBtn: 'linked', autoclose: true - }); + }); + + $('#finish_after').datepicker({ + language: 'de', + format: "dd.mm.yyyy", + showWeekDays: true, + todayBtn: 'linked', + autoclose: true + }); // disable mousewheel on input number field when in focus @@ -668,17 +705,18 @@ $('#price_setup-' + id).val(p.price_setup); console.log(p.attributes); - + console.log("form_id: " + id); if(typeof p.attributes === 'object' && "termination_required" in p.attributes && p.attributes.termination_required == 1) { console.log("termination_required"); - $('#termination_id-new-line').show(); - console.log($('#termination_id-new').val()); - $('#termination_id-new').select2({ + $('#termination_id-' + id + '-line').show(); + console.log($('#termination_id-' + id).val()); + $('#termination_id-' + id).select2({ allowClear: true, placeholder: "" }); } else { - $('#termination_id-new-line').hide(); + $('#termination_id-' + id + '-line').hide(); + //$('#termination_id-' + id + '-line').hide(); } }, 'json'); diff --git a/Layout/default/footer.php b/Layout/default/footer.php index 66ede0840..fccfa5350 100644 --- a/Layout/default/footer.php +++ b/Layout/default/footer.php @@ -21,7 +21,7 @@ - + \ No newline at end of file diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php index 493717d98..048eb45d4 100644 --- a/application/Order/OrderController.php +++ b/application/Order/OrderController.php @@ -188,26 +188,16 @@ class OrderController extends mfBaseController { $order_data['allow_spin'] = ($r->allow_spin) ? 1 : 0; $order_data['note'] = $r->note; - $order_date = $r->order_date; + $order_data['order_date'] = Layout::dateToInt($r->order_date); - if(!preg_match('/^(\d\d)\.(\d\d)\.(\d\d\d\d)$/',$order_date, $m)) { - $errors[] = "Ungültiges Bestelldateum"; - } else { - $day = intval($m[1]); - $month = intval($m[2]); - $year = intval($m[3]); - - if($day > 31 || $day < 1 - || $month > 12 || $month < 1 - || $year > date('Y')+1 || $year < date('Y')) - { - $this->layout()->setFlash("Ungültiges Bestelldatum"); - $this->layout()->set("Order", $r); + if($r->finish_after) { + $order_data['finish_after'] = Layout::dateToInt($r->finish_after); + if(!$r->finish_after_comment) { + $this->layout()->setFlash("Bitte Verzögerungsgrund angeben.", "warn"); + $this->layout()->set("order", $r); return $this->add(); } - - $order_date_ts = mktime(0,0,0,$month,$day,$year); - $order_data['order_date'] = $order_date_ts; + $order_data['finish_after_comment'] = $r->finish_after_comment; } $order_data['edit_by'] = $this->me->id; @@ -272,10 +262,6 @@ class OrderController extends mfBaseController { $this->log->warn(__CLASS__."::save() Invalid product: ".$p['product_id']); } - - - - $product_data = []; $product_data["order_id"] = $new_id; $product_data["product_id"] = $p["product_id"]; @@ -284,17 +270,20 @@ class OrderController extends mfBaseController { $product_data["description"] = $p["description"]; $product_data["price"] = Layout::commaToDot($p["price"]); $product_data["price_setup"] = Layout::commaToDot($p["price_setup"]); - $product_data["billing_delay"] = 0; + $product_data["billing_delay"] = ($p["billing_delay"]) ? $p["billing_delay"] : 0; $product_data["billing_period"] = $p["billing_period"]; + $require_term = false; if(array_key_exists(TT_ATTRIB_TERMINATION_REQUIRED_NAME, $prod->attributes) && $prod->attributes[TT_ATTRIB_TERMINATION_REQUIRED_NAME] == 1) { $require_term = true; if(!$p['termination_id']) { - $this->layout()->setFlash("Produkt nicht gespeichert. Produkt erfordert Anschluss.", "warn"); + $this->layout()->setFlash("Ein oder mehrere Produkte erfordern Anschluss.", "warn"); continue; } $product_data['termination_id'] = $p['termination_id']; + } else { + $product_data['termination_id'] = null; } diff --git a/application/Termination/Termination.php b/application/Termination/Termination.php index 55f811b8c..e29807577 100644 --- a/application/Termination/Termination.php +++ b/application/Termination/Termination.php @@ -75,6 +75,11 @@ class Termination extends mfBaseModel { public function getProperty($name) { if($this->$name == null) { + if($name == "status") { + $this->status = TerminationstatusModel::getOne($this->status_id); + return $this->status; + } + $classname = ucfirst($name); $idfield = $name."_id"; $this->$name = new $classname($this->$idfield); diff --git a/lib/Layout/Layout.php b/lib/Layout/Layout.php index 22907296f..fe4bf6c7e 100644 --- a/lib/Layout/Layout.php +++ b/lib/Layout/Layout.php @@ -16,11 +16,35 @@ class Layout extends mfLayout { return self::$instance; } - public function dotToComma($num) { + public static function dotToComma($num) { return str_replace(".", ",", $num); } - public function commaToDot($num) { + public static function commaToDot($num) { return str_replace(",", ".", $num); } + + public static function dateToInt($date) { + if(!preg_match('/^(\d\d)\.(\d\d)\.(\d\d\d\d)$/',$date, $m)) { + return false; + } else { + $day = intval($m[1]); + $month = intval($m[2]); + $year = intval($m[3]); + + if($day > 31 || $day < 1 + || $month > 12 || $month < 1 + || $year > date('Y')+1 || $year < date('Y')) + { + return false; + } + + $date_ts = mktime(0,0,0,$month,$day,$year); + return $date_ts; + } + } + + public static function intToDate($int) { + return date("d.m.Y", $int); + } } \ No newline at end of file