Skip to content
Code-Schnipsel Gruppen Projekte
Commit 8884ea22 erstellt von Patrick Müller's avatar Patrick Müller
Dateien durchsuchen

Merge branch 'feat-outputprovider' into dev

Übergeordnete 67c4c591 78fdd727
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
Keine zugehörigen Merge Requests gefunden
werden angezeigt mit 1603 Ergänzungen und 3 Löschungen
<?php
use QUI\ERP\Output\Output as ERPOutput;
use QUI\Utils\Security\Orthos;
/**
* Returns basic entity data used in OutputDialog
*
* @param string|int $entityId
* @param string $entityType
* @return array|false - Entity data or false
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_erp_ajax_output_getEntityData',
function ($entityId, $entityType) {
$OutputProvider = ERPOutput::getOutputProviderByEntityType(Orthos::clear($entityType));
if (empty($OutputProvider)) {
return false;
}
$hideSystemDefaultTemplate = false;
try {
$Conf = QUI::getPackage('quiqqer/erp')->getConfig();
$defaultTemplates = $Conf->get('output', 'default_templates');
if (!empty($defaultTemplates)) {
$defaultTemplates = \json_decode($defaultTemplates, true);
if (!empty($defaultTemplates[$entityType])) {
$hideSystemDefaultTemplate = $defaultTemplates[$entityType]['hideSystemDefault'];
}
}
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
}
return [
'email' => $OutputProvider::getEmailAddress(Orthos::clear($entityId)),
'hideSystemDefaultTemplate' => $hideSystemDefaultTemplate
];
},
['entityId', 'entityType'],
'Permission::checkAdminUser'
);
<?php
use QUI\ERP\Output\Output as ERPOutput;
use QUI\Utils\Security\Orthos;
/**
* Returns e-mail data for an output document
*
* @return array
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_erp_ajax_output_getMailData',
function ($entityId, $entityType) {
$OutputProvider = ERPOutput::getOutputProviderByEntityType(Orthos::clear($entityType));
$mailData = [
'subject' => '',
'content' => ''
];
if (empty($OutputProvider)) {
return $mailData;
}
$mailData['subject'] = $OutputProvider::getMailSubject($entityId);
$mailData['content'] = $OutputProvider::getMailBody($entityId);
return $mailData;
},
['entityId', 'entityType'],
'Permission::checkAdminUser'
);
<?php
use QUI\ERP\Output\Output as ERPOutput;
use QUI\Utils\Security\Orthos;
/**
* Returns the invoice templates
*
* @return array
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_erp_ajax_output_getPreview',
function ($entity, $template) {
$entity = Orthos::clearArray(\json_decode($entity, true));
$template = Orthos::clearArray(\json_decode($template, true));
try {
return ERPOutput::getDocumentHtml(
$entity['id'],
$entity['type'],
null,
ERPOutput::getOutputTemplateProviderByPackage($template['provider']),
$template['id'],
true
);
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
return '';
}
},
['entity', 'template'],
'Permission::checkAdminUser'
);
<?php
use QUI\ERP\Output\Output as ERPOutput;
use QUI\Utils\Security\Orthos;
/**
* Returns available output templates
*
* @param string $entityType (optional) - Restrict templates to those for $entityType
* @return array
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_erp_ajax_output_getTemplates',
function ($entityType = null) {
return ERPOutput::getTemplates(Orthos::clear($entityType));
},
['entityType'],
'Permission::checkAdminUser'
);
<?php
use QUI\ERP\Output\Output as ERPOutput;
use QUI\Utils\Security\Orthos;
/**
* Returns e-mail data for an output document
*
* @param string|int $entityId
* @param string $entityType
* @param string $template
* @param string $templateProvider
* @param string $mailSubject (optional)
* @param string $mailContent (optional)
*
* @return void
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_erp_ajax_output_sendMail',
function ($entityId, $entityType, $template, $templateProvider, $mailSubject, $mailContent) {
try {
$entityType = Orthos::clear($entityType);
$OutputProvider = ERPOutput::getOutputProviderByEntityType($entityType);
$TemplateProvider = ERPOutput::getOutputTemplateProviderByPackage(Orthos::clear($templateProvider));
if (empty($TemplateProvider)) {
$TemplateProvider = ERPOutput::getDefaultOutputTemplateProviderForEntityType($entityType);
}
ERPOutput::sendPdfViaMail(
$entityId,
$entityType,
$OutputProvider,
$TemplateProvider,
Orthos::clear($template),
null,
$mailSubject,
$mailContent
);
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
throw new \QUI\Exception([
'quiqqer/erp',
'exception.ajax.output.sendMail.error'
]);
}
QUI::getMessagesHandler()->addSuccess(
QUI::getLocale()->get('quiqqer/erp', 'Output.send.success')
);
},
['entityId', 'entityType', 'template', 'templateProvider', 'mailSubject', 'mailContent'],
'Permission::checkAdminUser'
);
.quiqqer-erp-outputDialog {
padding: 10px !important;
display: flex;
}
.quiqqer-erp-outputDialog .field-container-item {
width: 150px !important;
}
.quiqqer-erp-outputDialog-options {
padding: 5px;
width: 400px;
}
.quiqqer-erp-outputDialog form table {
border: none;
padding: 0;
}
.quiqqer-erp-outputDialog select {
width: 100%;
}
.quiqqer-erp-outputDialog-preview {
background-color: #efefef;
float: left;
height: 100%;
overflow: auto;
padding: 20px;
width: calc(100% - 400px);
}
.quiqqer-erp-outputDialog-preview {
background: #fff;
box-shadow: 0 0 0 0.75pt #d1d1d1, 0 0 3pt 0.75pt #ccc;
border: none;
display: block;
margin: 0 auto;
}
.quiqqer-erp-outputDialog-openMailEditor {
background-color: #dedede;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
cursor: pointer;
float: right;
padding: 5px;
}
<div class="quiqqer-erp-outputDialog-options">
<form>
<table class="data-table data-table-flexbox">
<tbody>
<tr>
<td>
<label class="field-container">
<span class="field-container-item" title="{{labelEntityId}}">
{{labelEntityId}}
</span>
<span class="field-container-field">
{{entityId}}
</span>
</label>
</td>
</tr>
<tr>
<td>
<label class="field-container">
<span class="field-container-item" title="{{labelTemplate}}">
{{labelTemplate}}
</span>
<select name="template" class="field-container-field"></select>
</label>
</td>
</tr>
<tr>
<td>
<label class="field-container">
<span class="field-container-item" title="{{labelOutputType}}">
{{labelOutputType}}
</span>
<span class="field-container-field field-container-field-no-padding field-output"></span>
</label>
</td>
</tr>
<tr style="display: none">
<td>
<label class="field-container">
<span class="field-container-item" title="{{labelEmail}}">
{{labelEmail}}
</span>
<input type="text"
name="recipient"
placeholder="email@domain.com"
class="field-container-field"/>
</label>
{{#mailEditor}}
<div class="quiqqer-erp-outputDialog-openMailEditor">
<span class="fa fa-envelope"></span>
<span>{{labelOpenMailEditor}}</span>
</div>
{{/mailEditor}}
</td>
</tr>
{{#showMarkAsSentOption}}
<tr>
<td>
<label class="field-container">
<span class="field-container-item" title="{{labelMarkAsSent}}">
{{labelMarkAsSent}}
</span>
<div class="field-container-field">
<input type="checkbox" name="mark_as_sent"/>
</div>
</label>
<div class="field-container-item-desc">
{{{descMarkAsSent}}}
</div>
</td>
</tr>
{{/showMarkAsSentOption}}
</tbody>
</table>
</form>
</div>
<div class="quiqqer-erp-outputDialog-preview"></div>
\ No newline at end of file
Dieser Diff ist reduziert.
.quiqqer-erp-outputMailEditor-mailEditor > label {
display: block;
margin: 10px 0;
width: 100%;
}
.quiqqer-erp-outputMailEditor-mailEditor-subject {
display: block;
width: 100%;
}
.quiqqer-erp-outputMailEditor-info {
float: left;
margin-top: 10px;
}
.quiqqer-erp-outputMailEditor-mailEditor-content {
height: 550px;
}
\ No newline at end of file
<div class="quiqqer-erp-outputMailEditor-mailEditor">
<label>
<span>{{labelMailSubject}}</span>
<input class="quiqqer-erp-outputMailEditor-mailEditor-subject" type="text"/>
</label>
<label>
<span>{{labelMailContent}}</span>
<div class="quiqqer-erp-outputMailEditor-mailEditor-content"></div>
</label>
</div>
<div class="quiqqer-erp-outputMailEditor-info">
{{{info}}}
</div>
\ No newline at end of file
/**
* Edit the e-mail subject and content of an Output document
*
* @module package/quiqqer/erp/bin/backend/controls/OutputMailEditor
* @author www.pcsg.de (Patrick Müller)
*
* @event onMailSubmit [MailData, this] - Fires if the user submits the mail data
*/
define('package/quiqqer/erp/bin/backend/controls/OutputMailEditor', [
'qui/QUI',
'qui/controls/windows/Confirm',
'qui/controls/buttons/Select',
'qui/controls/elements/Sandbox',
'qui/utils/Form',
'Ajax',
'Locale',
'Mustache',
'Users',
'text!package/quiqqer/erp/bin/backend/controls/OutputMailEditor.html',
'css!package/quiqqer/erp/bin/backend/controls/OutputMailEditor.css'
], function (QUI, QUIConfirm, QUISelect, QUISandbox, QUIFormUtils, QUIAjax, QUILocale, Mustache, Users, template) {
"use strict";
var lg = 'quiqqer/erp';
return new Class({
Extends: QUIConfirm,
type : 'package/quiqqer/erp/bin/backend/controls/OutputMailEditor',
Binds: [
'$onOpen',
'$onSubmit'
],
options: {
entityId : false, // Clean entity ID WITHOUT prefix and suffix
entityType: false, // Entity type (e.g. "Invoice")
mailSubject: false, // Mail subject that is shown initially
mailContent: false, // Mail content that is shown initially
maxHeight: 820,
maxWidth : 900
},
initialize: function (options) {
this.parent(options);
this.setAttributes({
icon : 'fa fa-envelope',
title : QUILocale.get(lg, 'controls.OutputMailEditor.title'),
autoclose : false,
cancel_button: {
textimage: 'fa fa-close',
text : QUILocale.get('quiqqer/system', 'close')
}
});
this.$Output = null;
this.$Preview = null;
this.$cutomerMail = null;
this.$Template = null;
this.$subject = null;
this.$content = null;
this.$MailSubjectInput = null;
this.$MailContentEditor = null;
this.addEvents({
onOpen : this.$onOpen,
onSubmit: this.$onSubmit
});
},
/**
* event: on open
*/
$onOpen: function () {
var self = this,
Content = this.getContent();
this.Loader.show();
Content.set({
html: Mustache.render(template, {
entityId : self.getAttribute('entityId'),
labelEntityId : QUILocale.get(lg, 'controls.OutputMailEditor.labelEntityId'),
labelMailSubject: QUILocale.get(lg, 'controls.OutputMailEditor.labelMailSubject'),
labelMailContent: QUILocale.get(lg, 'controls.OutputMailEditor.labelMailContent'),
info : QUILocale.get(lg, 'controls.OutputMailEditor.info')
})
});
Content.addClass('quiqqer-erp-OutputMailEditor');
this.$MailSubjectInput = Content.getElement('.quiqqer-erp-outputMailEditor-mailEditor-subject');
this.$subject = this.getAttribute('mailSubject');
this.$content = this.getAttribute('mailContent');
this.$getMailData().then(function (MailData) {
require(['Editors'], function (Editors) {
Editors.getEditor().then(function (Editor) {
Editor.addEvent('onLoaded', function () {
self.Loader.hide();
self.fireEvent('load', [self]);
Editor.resize();
});
Editor.inject(
Content.getElement('.quiqqer-erp-outputMailEditor-mailEditor-content')
);
self.$MailContentEditor = Editor;
if (self.$subject) {
self.$MailSubjectInput.value = self.$subject;
} else {
self.$MailSubjectInput.value = MailData.subject;
}
if (self.$content) {
self.$MailContentEditor.setContent(self.$content);
} else {
self.$MailContentEditor.setContent(MailData.content);
}
});
});
});
},
/**
* Event: onSubmit
*/
$onSubmit: function () {
this.fireEvent('mailSubmit', [
{
subject: this.$MailSubjectInput.value,
content: this.$MailContentEditor.getContent()
},
this
]);
this.close();
},
/**
* Get data of the entity that is outputted
*
* @return {Promise}
*/
$getMailData: function () {
var self = this;
return new Promise(function (resolve, reject) {
QUIAjax.get('package_quiqqer_erp_ajax_output_getMailData', resolve, {
'package' : 'quiqqer/erp',
entityId : self.getAttribute('entityId'),
entityType: self.getAttribute('entityType'),
onError : reject
})
});
}
});
});
\ No newline at end of file
......@@ -158,8 +158,6 @@ define('package/quiqqer/erp/bin/backend/controls/Panel', [
return;
}
console.log(typeOf(cls));
});
}
});
......
.quiqqer-erp-settings-output-templates__hidden {
display: none !important;
}
.quiqqer-erp-settings-output-templates-default-select {
width: 100%;
}
.quiqqer-erp-settings-output-templates-hide-system-default {
display: block;
float: none !important;
width: 100% !important;
}
.quiqqer-erp-settings-output-templates-hide-system-default > label {
float: none !important;
}
\ No newline at end of file
<table class="data-table data-table-flexbox">
<tbody>
{{#templates}}
<tr>
<td>
<div class="field-container">
<span class="field-container-item" title="{{entityTypeTitle}}">
{{title}}
</span>
<div class="field-container-field">
<select class="quiqqer-erp-settings-output-templates-default-select" data-entitytype="{{entityType}}">
{{#outputTemplates}}
<option value="{{id}}--{{provider}}"
data-systemdefault="{{isSystemDefault}}"
data-provider="{{provider}}"
>
{{title}}
</option>
{{/outputTemplates}}
</select>
<label class="quiqqer-erp-settings-output-templates-hide-system-default quiqqer-erp-settings-output-templates__hidden">
<input type="checkbox"/>
<label>{{labelHideSystemDefault}}</label>
</label>
</div>
</div>
</td>
</tr>
{{/templates}}
</tbody>
</table>
\ No newline at end of file
/**
* Set default output templates for all output providers
*
* @module package/quiqqer/erp/bin/backend/controls/settings/OutputTemplates
* @author www.pcsg.de (Patrick Müller)
*/
define('package/quiqqer/erp/bin/backend/controls/settings/OutputTemplates', [
'qui/QUI',
'qui/controls/loader/Loader',
'qui/controls/Control',
'Locale',
'Mustache',
'Ajax',
'text!package/quiqqer/erp/bin/backend/controls/settings/OutputTemplates.html',
'css!package/quiqqer/erp/bin/backend/controls/settings/OutputTemplates.css'
], function (QUI, QUILoader, QUIControl, QUILocale, Mustache, QUIAjax, template) {
"use strict";
var lg = 'quiqqer/erp';
return new Class({
Extends: QUIControl,
Type : 'package/quiqqer/erp/bin/backend/controls/settings/OutputTemplates',
Binds: [
'$onImport',
'$getTemplates',
'$onTemplateSelectChange',
'$setValue'
],
initialize: function (options) {
this.parent(options);
this.Loader = new QUILoader();
this.$Input = null;
this.$templateSelects = [];
this.addEvents({
onImport: this.$onImport
});
},
/**
* @event: on import
*/
$onImport: function () {
var self = this;
this.$Input = this.getElm();
this.$Input.type = 'hidden';
var Content = new Element('div', {
'class': 'quiqqer-erp-settings-output-templates'
}).inject(this.$Input, 'before');
this.Loader.inject(Content);
this.Loader.show();
this.$getTemplates().then(function (templates) {
self.Loader.hide();
var Templates = {};
var entityType;
// Parse templates by entity type
for (var i = 0, len = templates.length; i < len; i++) {
var Template = templates[i];
if (!(Template.entityType in Templates)) {
Templates[Template.entityType] = {
entityTypeTitle: Template.entityTypeTitle,
outputTemplates: []
};
}
Template.isSystemDefault = Template.isSystemDefault ? 1 : 0;
Templates[Template.entityType].outputTemplates.push(Template);
}
var renderTemplates = [];
for (entityType in Templates) {
renderTemplates.push({
title : Templates[entityType].entityTypeTitle,
entityType : entityType,
outputTemplates: Templates[entityType].outputTemplates
});
}
Content.set('html', Mustache.render(template, {
labelHideSystemDefault: QUILocale.get(lg,
'controls.settings.OutputTemplates.tpl.labelHideSystemDefault'
),
templates : renderTemplates
}));
self.$templateSelects = Content.getElements('.quiqqer-erp-settings-output-templates-default-select');
self.$templateSelects.addEvent('change', self.$onTemplateSelectChange);
var defaultCheckboxes = Content.getElements('.quiqqer-erp-settings-output-templates-hide-system-default');
defaultCheckboxes.addEvent('change', self.$setValue);
// Set values from setting
if (self.$Input.value === '') {
return;
}
var Setting = JSON.decode(self.$Input.value);
for (entityType in Setting) {
if (!Setting.hasOwnProperty(entityType)) {
continue;
}
var EntitySetting = Setting[entityType];
var Select = Content.getElement('select[data-entitytype="' + entityType + '"]');
if (!Select) {
continue;
}
Select.value = EntitySetting.id + '--' + EntitySetting.provider;
var DefaultCheckbox = Select.getParent().getElement(
'.quiqqer-erp-settings-output-templates-hide-system-default input'
);
var Option = Select.getElement('option[value="' + Select.value + '"]');
if (!parseInt(Option.get('data-systemdefault'))) {
DefaultCheckbox.getParent().removeClass('quiqqer-erp-settings-output-templates__hidden');
}
DefaultCheckbox.checked = EntitySetting.hideSystemDefault;
}
});
},
/**
* Handle change of selected template
*
* @param {DOMEvent} event
*/
$onTemplateSelectChange: function (event) {
var Select = event.target,
DefaultCheckbox = Select.getParent().getElement('.quiqqer-erp-settings-output-templates-hide-system-default'),
Selected = Select.getElement('option[value="' + Select.value + '"]');
if (!parseInt(Selected.get('data-systemdefault'))) {
DefaultCheckbox.removeClass('quiqqer-erp-settings-output-templates__hidden');
} else {
DefaultCheckbox.addClass('quiqqer-erp-settings-output-templates__hidden');
}
this.$setValue();
},
/**
* Set default templates setting value
*/
$setValue: function () {
var DefaultTemplates = {};
for (var i = 0, len = this.$templateSelects.length; i < len; i++) {
var Select = this.$templateSelects[i],
DefaultCheckbox = Select.getParent().getElement('.quiqqer-erp-settings-output-templates-hide-system-default input'),
value = Select.value.split('--');
DefaultTemplates[Select.get('data-entitytype')] = {
id : value[0],
provider : value[1],
hideSystemDefault: DefaultCheckbox.checked
};
}
this.$Input.value = JSON.encode(DefaultTemplates);
},
/**
* Fetch available templates for all entity types
*
* @return {Promise}
*/
$getTemplates: function () {
var self = this;
return new Promise(function (resolve, reject) {
QUIAjax.get('package_quiqqer_erp_ajax_output_getTemplates', resolve, {
'package': 'quiqqer/erp',
//entityType: self.getAttribute('entityType'),
onError : reject
})
});
},
});
});
<?php
/**
* This file contains the PDF download for an ERP Output document
* It opens the native download dialog
*/
define('QUIQQER_SYSTEM', true);
define('QUIQQER_AJAX', true);
require_once dirname(__FILE__, 6).'/header.php';
use QUI\ERP\Output\Output;
use QUI\Utils\Security\Orthos;
$User = QUI::getUserBySession();
if (!$User->canUseBackend()) {
exit;
}
$Request = QUI::getRequest();
$entityId = Orthos::clear($Request->query->get('id'));
$entityType = Orthos::clear($Request->query->get('t'));
$template = Orthos::clear($Request->query->get('tpl'));
$templateProvider = Orthos::clear($Request->query->get('tplpr'));
$quiId = Orthos::clear($Request->query->get('oid'));
$errorOutput = function ($message) use ($quiId) {
echo '
<script>
var parent = window.parent;
if (typeof parent.require !== "undefined") {
parent.require(["qui/QUI"], function(QUI) {
QUI.getMessageHandler().then(function(MH) {
MH.addError("'.$message.'");
});
var Control = QUI.Controls.getById(\''.$quiId.'\');
if (Control) {
Control.Loader.hide();
}
});
}
</script>';
exit;
};
try {
$HtmlPdfDocument = Output::getDocumentPdf(
$entityId,
$entityType,
null,
Output::getOutputTemplateProviderByPackage($templateProvider),
$template ?: null
);
$HtmlPdfDocument->download();
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
$message = $Exception->getMessage();
$message = QUI\Utils\Security\Orthos::clear($message);
$errorOutput($message);
}
<?php
define('QUIQQER_SYSTEM', true);
define('QUIQQER_AJAX', true);
require_once dirname(__FILE__, 6).'/header.php';
use QUI\ERP\Output\Output;
use QUI\Utils\Security\Orthos;
$User = QUI::getUserBySession();
if (!$User->canUseBackend()) {
exit;
}
$Request = QUI::getRequest();
$entityId = Orthos::clear($Request->query->get('id'));
$entityType = Orthos::clear($Request->query->get('t'));
$template = Orthos::clear($Request->query->get('tpl'));
$templateProvider = Orthos::clear($Request->query->get('tplpr'));
$quiId = Orthos::clear($Request->query->get('oid'));
$streamFile = URL_OPT_DIR.'quiqqer/erp/bin/output/backend/printStream.php?';
$streamFile .= \http_build_query([
'id' => $entityId,
't' => $entityType,
'tpl' => $template,
'tplpr' => $templateProvider,
'oid' => $quiId
]);
echo '
<html>
<head>
<style>
body, html {
margin: 0 !important;
padding: 0 !important;
}
@page {
margin: 0 !important;
}
.container {
padding: 2.5em;
width: calc(100% - 5em);
}
</style>
</head>
<body>
<div class="container">
<img
id="pdfDocument"
src="'.$streamFile.'"
style="max-width: 100%;"
/>
</div>
<script>
var i, len, parts;
var search = {};
var sData = window.location.search.replace("?", "").split("&");
for (i = 0, len = sData.length; i <len; i++) {
parts = sData[i].split("=");
search[parts[0]] = parts[1];
}
var invoiceId = search["invoiceId"];
var objectId = search["oid"];
var parent = window.parent;
window.onload = function() {
window.print();
parent.QUI.Controls.getById(objectId).$onPrintFinish(invoiceId);
}
</script>
</body>
</html>
<!--<script>window.print()</script>-->';
<?php
define('QUIQQER_SYSTEM', true);
define('QUIQQER_AJAX', true);
require_once dirname(__FILE__, 6).'/header.php';
use QUI\ERP\Output\Output;
use QUI\Utils\Security\Orthos;
$User = QUI::getUserBySession();
if (!$User->canUseBackend()) {
exit;
}
$Request = QUI::getRequest();
$entityId = Orthos::clear($Request->query->get('id'));
$entityType = Orthos::clear($Request->query->get('t'));
$template = Orthos::clear($Request->query->get('tpl'));
$templateProvider = Orthos::clear($Request->query->get('tplpr'));
$quiId = Orthos::clear($Request->query->get('oid'));
try {
$HtmlPdfDocument = Output::getDocumentPdf(
$entityId,
$entityType,
null,
Output::getOutputTemplateProviderByPackage($templateProvider),
$template ?: null
);
$imageFile = $HtmlPdfDocument->createImage(
true,
[
'-flatten' // removes background
]
);
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
exit;
}
$Response = QUI::getGlobalResponse();
$Response->headers->set('Content-Type', 'image/jpg');
$Response->setContent(file_get_contents($imageFile));
$Response->send();
if (\file_exists($imageFile)) {
\unlink($imageFile);
}
<?php
/**
* This file contains the PDF download for an ERP Output document (frontend)
* It opens the native download dialog
*/
define('QUIQQER_SYSTEM', true);
define('QUIQQER_AJAX', true);
require_once dirname(__FILE__, 6).'/header.php';
use QUI\ERP\Output\Output;
use QUI\Utils\Security\Orthos;
$User = QUI::getUserBySession();
$Request = QUI::getRequest();
$entityId = Orthos::clear($Request->query->get('id'));
$entityType = Orthos::clear($Request->query->get('t'));
try {
$OutputProvider = Output::getOutputProviderByEntityType($entityType);
if (empty($OutputProvider)) {
exit;
}
if (!$OutputProvider::hasDownloadPermission($entityId, $User)) {
exit;
}
$HtmlPdfDocument = Output::getDocumentPdf($entityId, $entityType, $OutputProvider);
$HtmlPdfDocument->download();
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
}
exit;
......@@ -29,7 +29,8 @@
"quiqqer\/qui-php": "1.*|>=0.11|dev-master|dev-dev",
"quiqqer\/smarty3": ">=1.7|dev-master|dev-dev",
"quiqqer\/countries": ">=1.3|dev-master|dev-dev",
"quiqqer\/frontend-users": "1.*|dev-master|dev-dev"
"quiqqer\/frontend-users": "1.*|dev-master|dev-dev",
"quiqqer\/erp-accounting-templates": "^1|dev-master|dev-dev"
},
"autoload": {
"psr-4": {
......
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren