Merge remote-tracking branch 'remotes/origin/modules/dev_mod_pdfDocumentsFull_ordermanager' into modules/rel_mod_pdfDocumentsFull

This commit is contained in:
Daniel Seifert 2020-06-10 13:47:58 +02:00
commit a5f7d64d81
11 changed files with 190 additions and 16 deletions

View File

@ -31,6 +31,8 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
const PDF_DESTINATION_DOWNLOAD = 'D'; // force download in browser
const PDF_DESTINATION_STDOUT = 'I'; // show in browser plugin if available, otherwise download
const PDF_DESTINATION_FILE = 'F'; // save as local file
const PDF_DESTINATION_FILEANDSTDOUT = 'FI'; // output as local file and show in browser plugin
const PDF_DESTINATION_FILEANDDOWNLOAD = 'FD'; // output as local file and force download in browser
const PDF_DESTINATION_STRING = 'S'; // output as string
const PDF_ORIENTATION_PORTRAIT = 'P';
@ -59,14 +61,20 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
* @param $sFilename
* @param int $iSelLang
* @param string $target
*
* @return mixed|string
* @throws Html2PdfException
*/
public function genPdf($sFilename, $iSelLang = 0, $target = self::PDF_DESTINATION_STDOUT)
{
$sFilename = $this->getFilename();
$oPdf = oxNew(Html2Pdf::class, ...$this->getPdfProperties());
$oPdf->setTestIsImage(false);
$oPdf->writeHTML($this->getHTMLContent($iSelLang));
$oPdf->output($sFilename, $target);
$oPdf->pdf->SetAuthor(Registry::getConfig()->getActiveShop()->getFieldData('oxname'));
$oPdf->pdf->SetTitle(Registry::getLang()->translateString($this->getTitleIdent()));
$oPdf->pdf->SetCreator('D³ PDF Documents for OXID eShop');
$oPdf->pdf->SetSubject(NULL);
return $oPdf->output($sFilename, $target);
}
/**
@ -84,6 +92,46 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
}
}
/**
* @param string $path
* @param int $iLanguage
*
* @throws Html2PdfException
*/
public function savePdfFile($path, $iLanguage = 0)
{
try {
$sFilename = $this->getFilename();
$this->genPdf(
rtrim($path, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$sFilename,
$iLanguage,
self::PDF_DESTINATION_FILE
);
} catch (pdfGeneratorExceptionAbstract $e) {
Registry::get(UtilsView::class)->addErrorToDisplay($e);
Registry::getLogger()->error($e);
}
}
/**
* @param int $iLanguage
*
* @return null|string
* @throws Html2PdfException
*/
public function getPdfContent($iLanguage = 0)
{
try {
$sFilename = $this->getFilename();
return $this->genPdf( $sFilename, $iLanguage, self::PDF_DESTINATION_STRING );
} catch (pdfGeneratorExceptionAbstract $e) {
Registry::get(UtilsView::class)->addErrorToDisplay($e);
Registry::getLogger()->error($e);
}
return null;
}
public function setSmartyVars()
{
$this->oSmarty->assign('oConfig', Registry::getSession()->getConfig());
@ -99,6 +147,7 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
*/
public function getHTMLContent($iSelLang = 0)
{
$blCurrentRenderFromAdmin = self::$_blIsAdmin;
self::$_blIsAdmin = $this->renderTemplateFromAdmin();
$lang = Registry::getLang();
@ -112,6 +161,8 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
$lang->setTplLanguage($currTplLang);
self::$_blIsAdmin = $blCurrentRenderFromAdmin;
return $content;
}

View File

@ -22,6 +22,7 @@ use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsOrderInterface as o
use \OxidEsales\Eshop\Application\Model\Order;
use OxidEsales\Eshop\Application\Model\Payment;
use OxidEsales\Eshop\Application\Model\User;
use Spipu\Html2Pdf\Exception\Html2PdfException;
abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInterface
{
@ -89,6 +90,9 @@ abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInt
* @param $sFilename
* @param int $iSelLang
* @param string $target
*
* @return mixed|string|void
* @throws Html2PdfException
* @throws noBaseObjectSetException
*/
public function genPdf($sFilename, $iSelLang = 0, $target = 'I')
@ -98,6 +102,6 @@ abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInt
throw $e;
}
parent::genPdf($sFilename, $iSelLang, $target);
return parent::genPdf($sFilename, $iSelLang, $target);
}
}

View File

@ -35,6 +35,14 @@ class deliverynotewithoutlogoPdf extends deliverynotePdf
return "ORDER_OVERVIEW_PDF_DNOTE_WITHOUT_LOGO";
}
/**
* @return string
*/
public function getTypeForFilename()
{
return 'delnote-nl';
}
/**
* @return string
*/

View File

@ -20,6 +20,7 @@ namespace D3\PdfDocuments\Application\Model\Documents;
use D3\PdfDocuments\Application\Model\AbstractClasses\pdfdocumentsOrder;
use D3\PdfDocuments\Application\Model\Exceptions\noBaseObjectSetException;
use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsOrderinvoiceInterface;
use Spipu\Html2Pdf\Exception\Html2PdfException;
class invoicePdf extends pdfdocumentsOrder implements pdfdocumentsOrderinvoiceInterface
{
@ -54,7 +55,9 @@ class invoicePdf extends pdfdocumentsOrder implements pdfdocumentsOrderinvoiceIn
* @param $sFilename
* @param int $iSelLang
* @param string $target
* @return void
*
* @return mixed|string|void
* @throws Html2PdfException
* @throws noBaseObjectSetException
*/
public function genPdf( $sFilename, $iSelLang = 0, $target = 'I' )
@ -63,7 +66,7 @@ class invoicePdf extends pdfdocumentsOrder implements pdfdocumentsOrderinvoiceIn
$this->setInvoiceDate();
$this->saveOrderOnChanges();
parent::genPdf( $sFilename, $iSelLang, $target );
return parent::genPdf( $sFilename, $iSelLang, $target );
}
public function setInvoiceNumber()

View File

@ -36,6 +36,14 @@ class invoicewithoutlogoPdf extends invoicePdf
return "ORDER_OVERVIEW_PDF_STANDART_WITHOUT_LOGO";
}
/**
* @return string
*/
public function getTypeForFilename()
{
return 'invoice-nl';
}
/**
* @return string
*/

View File

@ -46,6 +46,19 @@ interface pdfdocumentsGenericInterface
*/
public function downloadPdf($iLanguage = 0);
/**
* @param int $iLanguage
*
* @return string|null
*/
public function getPdfContent($iLanguage = 0);
/**
* @param string $path
* @param int $iLanguage
*/
public function savePdfFile($path, $iLanguage = 0);
/**
* @param $sFilename
* @param int $iSelLang

View File

@ -0,0 +1,50 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
namespace D3\PdfDocuments\Application\Model\Registries;
use D3\PdfDocuments\Application\Model\Documents\deliverynotePdf;
use D3\PdfDocuments\Application\Model\Documents\deliverynotewithoutlogoPdf;
use D3\PdfDocuments\Application\Model\Documents\invoicePdf;
use D3\PdfDocuments\Application\Model\Documents\invoicewithoutlogoPdf;
use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsOrderInterface;
class registryOrdermanagerActions extends registryAbstract implements registryOrdermanagerActionsInterface
{
public function __construct()
{
$this->addGenerator(invoicePdf::class);
$this->addGenerator(deliverynotePdf::class);
$this->addGenerator(invoicewithoutlogoPdf::class);
$this->addGenerator(deliverynotewithoutlogoPdf::class);
}
/**
* @return string
*/
public function getRequiredGeneratorInterfaceClassName()
{
return pdfdocumentsOrderInterface::class;
}
/**
* @param $className * generator fully qualified class name
* @return pdfdocumentsOrderInterface
*/
public function getGenerator($className)
{
return $this->_aRegistry[$className];
}
}

View File

@ -0,0 +1,26 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Max Buhe <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
namespace D3\PdfDocuments\Application\Model\Registries;
interface registryOrdermanagerActionsInterface extends registryGenericInterface
{
/**
* @param $className * generator fully qualified class name
*/
public function addGenerator($className);
}

View File

@ -0,0 +1,6 @@
[{* fold marks *}]
<div style="position: absolute; top: [{math equation="tpos - tpad" tpos=87 tpad=35}]mm; left: [{math equation="lpos - lpad" tpos=5 tpad=10}]mm; margin-left: -10mm; width: 7px; height: 0; border-top: 1px solid silver"></div>
<div style="position: absolute; top: [{math equation="tpos - tpad" tpos=192 tpad=35}]mm; left: [{math equation="lpos - lpad" tpos=5 tpad=10}]mm; margin-left: -10mm; width: 7px; height: 0; border-top: 1px solid silver"></div>
[{* punch mark *}]
<div style="position: absolute; top: [{math equation="tpos - tpad" tpos=148.5 tpad=35}]mm; left: [{math equation="lpos - lpad" tpos=5 tpad=10}]mm; margin-left: -10mm; width: 7px; height: 0; border-top: 1px solid silver"></div>

View File

@ -6,7 +6,7 @@
[{include file="d3pdfstyle.css"}]
</style>
<page backtop="30mm" backbottom="30mm" backleft="10mm" backright="10mm" pageset="new">
<page backtop="30mm" backbottom="30mm" backleft="10mm" backright="10mm" pageset="new" orientation="P" format="A4">
<page_header>
[{block name="pdfTopingFile"}]
[{include file="d3pdfheader.tpl" showLogo=true}]
@ -18,6 +18,11 @@
[{/block}]
</page_footer>
[{* +++++ fold and punch marks +++++ *}]
[{block name="pdfDIN5008Markings"}]
[{include file="d3din5008.tpl"}]
[{/block}]
[{* +++++ main page part +++++ *}]
[{block name="pdfHeadingFile"}]
[{block name="pdfHeaderFile"}]

View File

@ -28,7 +28,7 @@ $sMetadataVersion = '2.0';
$logo = (class_exists(d3utils::class) ? d3utils::getInstance()->getD3Logo() : 'D&sup3;');
$sModuleId = 'pdfDocuments';
$sModuleId = 'd3PdfDocuments';
/**
* Module information
*/
@ -38,7 +38,6 @@ $aModule = [
'de' => $logo.' PDF-Dokumente aus HTML-Templates',
'en' => $logo.' PDF documents from HTML templates',
],
'thumbnail' => 'picture.png',
'version' => '1.0',
'author' => 'D&sup3; Data Development (Inh.: Thomas Dartsch)',
'email' => 'support@shopmodule.com',
@ -64,6 +63,7 @@ $aModule = [
'd3pdfheader.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/header.tpl',
'd3pdffooter.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/footer.tpl',
'd3din5008.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/din5008.tpl',
'd3pdfstyle.css' => 'd3/pdfdocuments/out/src/css/pdfStyling.css'
],
'events' => [],