diff --git a/Layout/default/Emailtemplates/attachments/new_order.pdf.php b/Layout/default/Emailtemplates/attachments/new_order_spin.pdf.php
similarity index 100%
rename from Layout/default/Emailtemplates/attachments/new_order.pdf.php
rename to Layout/default/Emailtemplates/attachments/new_order_spin.pdf.php
diff --git a/Layout/default/Order/Index.php b/Layout/default/Order/Index.php
index bb1ac768b..02cc272b5 100644
--- a/Layout/default/Order/Index.php
+++ b/Layout/default/Order/Index.php
@@ -51,6 +51,35 @@
BNC
+
+ products)) {
+ foreach($order->products as $product) {
+ if(is_array($product->product->attributes) && count($product->product->attributes)) {
+ if(array_key_exists("hw_only", $product->product->attributes)) {
+ if($product->product->attributes["hw_only"]->value) {
+ $hw = true;
+ }
+ }
+ if(array_key_exists("voip_chan", $product->product->attributes)) {
+ if($product->product->attributes["voip_chan"]->value) {
+ $voip = true;
+ }
+ }
+ if($hw && $voip_chan) {
+ break;
+ }
+ }
+ }
+ }
+
+ ?>
+ =($voip) ? "" : ""?>
+ =($hw) ? "" : ""?>
=nl2br($order->owner->getCompanyOrName())?>
@@ -70,6 +99,8 @@
| =date("d.m.Y", $order->edit)?> |
=$order->editor->name?> |
+ $order->id])?>">
+ $order->id])?>" onclick="if(!confirm('Soll der Service-PIN an den Vertragsinhaber gesendet werden?')) return false;">
$order->id])?>">
$order->id])?>" onclick="if(!confirm('Bestellung wirklich löschen?')) return false;" class="text-danger" title="Löschen">
|
diff --git a/application/Address/AddressController.php b/application/Address/AddressController.php
index 90ccdf67e..e7ce3497f 100644
--- a/application/Address/AddressController.php
+++ b/application/Address/AddressController.php
@@ -140,5 +140,7 @@ class AddressController extends mfBaseController {
$this->layout()->setFlash("Adresse erfolgreich gespeichert.", "success");
$this->redirect("Address", "Edit", ['id' => $new_id]);
}
+
+
}
\ No newline at end of file
diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php
index 992ce5cd1..e9e23dbca 100644
--- a/application/Order/OrderController.php
+++ b/application/Order/OrderController.php
@@ -383,15 +383,18 @@ class OrderController extends mfBaseController {
if($owner->save()) {
// render service pin PDF
- $pdf = new Layout();
+ $pdf = new PdfForm("Emailtemplates/attachments/new_order_spin.pdf", ["owner" => $owner, "order" => $order]);
+ $pdfpath = $pdf->render();
+ $tvalue = $pdf->getReturnedValues();
+ $pdfname = $tvalue['filename'];
+
+ /*$pdf = new Layout();
$pdf->setTemplate("Emailtemplates/attachments/new_order.pdf");
$pdf->set("ressourcePathPrefix", BASEDIR."/public/");
$pdf->set("owner", $owner);
- $pdf->set("order", $order);
+ $pdf->set("order", $order);*/
+
- $pdfpath = $pdf->renderPDF();
- $tvalue = $pdf->getReturnedValue();
- $pdfname = $tvalue['filename'];
//var_dump($pdfpath);exit;
@@ -513,5 +516,94 @@ class OrderController extends mfBaseController {
$this->redirect("Order");
}
+ protected function downloadServicePinAction() {
+ $order_id = $this->request->id;
+ if(!is_numeric($order_id) || !$order_id) {
+ $this->layout->setFlash("Adresse nicht gefunden!");
+ $this->redirect("Order");
+ }
+
+ $order = new Order($order_id);
+ if(!$order->id) {
+ $this->layout->setFlash("Bestellung nicht gefunden!");
+ $this->redirect("Order");
+ }
+
+ $owner = $order->owner;
+
+ if(!$owner->customer_number || !$owner->spin) {
+ $this->layout->setFlash("Vertragsinhaber hat keine Kundennummer oder Service PIN!", "error");
+ $this->redirect("Order");
+ }
+
+ // render service pin PDF
+ $pdf = new PdfForm("Emailtemplates/attachments/new_order_spin.pdf", ["owner" => $owner, "order" => $order]);
+ $pdfpath = $pdf->render();
+ $tvalue = $pdf->getReturnedValues();
+ $pdfname = $tvalue['filename'];
+ $pdf->download($pdfname);
+
+ }
+
+ protected function sendServicePinAction() {
+ $order_id = $this->request->id;
+ if(!is_numeric($order_id) || !$order_id) {
+ $this->layout->setFlash("Adresse nicht gefunden!");
+ $this->redirect("Order");
+ }
+
+ $order = new Order($order_id);
+ if(!$order->id) {
+ $this->layout->setFlash("Bestellung nicht gefunden!");
+ $this->redirect("Order");
+ }
+
+ $owner = $order->owner;
+
+ if(!$owner->customer_number || !$owner->spin) {
+ $this->layout->setFlash("Vertragsinhaber hat keine Kundennummer oder Service PIN!", "error");
+ $this->redirect("Order");
+ }
+
+ // render service pin PDF
+ $pdf = new PdfForm("Emailtemplates/attachments/new_order_spin.pdf", ["owner" => $owner, "order" => $order]);
+ $pdfpath = $pdf->render();
+ $tvalue = $pdf->getReturnedValues();
+ $pdfname = $tvalue['filename'];
+
+ // TODO template rendern auslagern nach Emailtempate klasse
+ $tpl = new Layout();
+ $tpl->setTemplate("Emailtemplates/customer/new_order");
+ $tpl->set("owner", $owner);
+ $body = $tpl->render();
+
+ $values = $tpl->getReturnedValue();
+
+ //var_dump($values);exit;
+
+ $subject = $values['subject'];
+ $from = $values['from_email'];
+ $from_name = $values['from_email_name'];
+ $to = $owner->email;
+
+ if(!$subject || !$from || !$from_name || !$to) {
+ $this->log->warn("Service PIN Email not sent. (subject: '$subject', from: '$from', from_email: '$from_name', to: '$to')");
+ $this->layout()->setFlash("Beim Email versenden ist ein Fehler aufgetragen.", "error");
+ $this->redirect("Order");
+ } else {
+ $email = new Emailnotification();
+ $email->setSubject($subject);
+ $email->setBody($body);
+ $email->setFrom($from, $from_name);
+ $email->setTo($to);
+ $email->setHeader("X-xinon-oid", $order->id);
+ $email->setHeader("X-xinon-pid", $product->id);
+ $email->addAttachment($pdfpath, null, $pdfname, "application/pdf");
+ $email->send();
+
+ $this->layout()->setFlash("Service PIN wurde erfolgreich verschickt..", "success");
+ $this->redirect("Order");
+ }
+ }
}
\ No newline at end of file
diff --git a/lib/PdfForm/PdfForm.php b/lib/PdfForm/PdfForm.php
new file mode 100644
index 000000000..ac0b5ceae
--- /dev/null
+++ b/lib/PdfForm/PdfForm.php
@@ -0,0 +1,64 @@
+log = mfLoghandler::singleton();
+ $this->layout = new Layout();
+ $this->template = $template;
+ $this->variables = $variables;
+ }
+
+
+ public function render() {
+ $this->layout->setTemplate($this->template);
+ $this->layout->set("ressourcePathPrefix", BASEDIR."/public/");
+ foreach($this->variables as $name => $value) {
+ $this->layout->set($name, $value);
+ }
+
+ $fullpath = $this->layout->renderPDF();
+ $this->fullpath = $fullpath;
+ $this->returnValues = $this->layout->getReturnedValue();
+
+ return $fullpath;
+ }
+
+ public function download($filename = false) {
+ if(!$this->fullpath) {
+ $this->render();
+ }
+
+ $filepath = $this->fullpath;
+
+ if (!$filename && strpos($filepath, "/") !== false) {
+ $path_parts = explode("/", $filepath);
+ $filename = end($path_parts);
+ }
+
+ header('Content-Type: application/octet-stream');
+ header('Content-disposition: attachment; filename="'.$filename.'"');
+ header('Content-Transfer-Encoding: binary');
+ header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+ header('Content-Type: ' . mime_content_type($filepath));
+ header("Content-Length: " . filesize($filepath));
+
+ readfile($filepath);
+ exit;
+ }
+
+ public function getFullPath() {
+ return $this->fullpath;
+ }
+
+ public function getReturnedValues() {
+ return $this->returnValues;
+ }
+
+}
\ No newline at end of file
diff --git a/lib/mvcfronk/mfLayout/mfLayout.php b/lib/mvcfronk/mfLayout/mfLayout.php
index 6694e363e..57fdcd5f9 100644
--- a/lib/mvcfronk/mfLayout/mfLayout.php
+++ b/lib/mvcfronk/mfLayout/mfLayout.php
@@ -76,7 +76,7 @@ class mfLayout {
$html = $this->render();
if (!$filename)
- $filename = date('U') . ".pdf";
+ $filename = date('U') . "-" . rand(1000, 9999) . ".pdf";
$wk = new mfWkhtmltopdf($html);
@@ -108,10 +108,10 @@ class mfLayout {
header('Content-disposition: attachment; filename=' . $filename);
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
- header('Content-Type: ' . mime_content_type($filename));
- header("Content-Length: " . filesize($filename));
-
- readfile($file);
+ header('Content-Type: ' . mime_content_type($filepath));
+ header("Content-Length: " . filesize($filepath));
+
+ readfile($filepath);
exit;
}