Comparer les révisions

...

42 Révisions

Auteur SHA1 Message Date
79ec86cdda adjust version information 2024-10-04 10:39:52 +02:00
28d7e692a2 fix tax note syntax in Twig template 2024-10-04 10:36:37 +02:00
99810c9cba add language switch 2024-10-01 09:48:00 +02:00
9a4d09678c complete documentation 2024-10-01 09:32:44 +02:00
813fbb208d adjust documentation 2024-10-01 09:08:27 +02:00
146b68ef1c Merge branch 'dev_2.x_OXID7' into rel_2.x 2024-10-01 08:51:15 +02:00
f58298ae24 [Fixed] missing docs adjustments 2024-09-12 13:11:17 +02:00
adadf94f74 remove unparsable logo from metadata 2024-09-10 12:08:03 +02:00
72e14257eb Merge remote-tracking branch 'remotes/origin/dev_2.x_OXID7_logofile' into dev_2.x_OXID7 2024-09-10 12:01:00 +02:00
4c9dbbdabc remove ModCfg dependency
because of minimal usage
2024-09-10 12:00:45 +02:00
ec7d3f5622 adjust Smarty templates 2024-09-10 09:15:51 +02:00
0b4c634352
add development manual 2024-09-09 23:22:51 +02:00
d89b00843f
add template block overloadable company logo 2024-09-09 22:44:49 +02:00
beaa79c0e9 get dev mode from module setting service 2024-09-09 16:29:13 +02:00
ec6a0920d0 don't include stylesheet as file reference, use it as included template 2024-09-09 14:48:01 +02:00
57a1e62248 [Fixed] wrong converted date 2024-09-08 17:39:47 +02:00
4eabe55faa [Changed] translation 2024-09-06 18:42:36 +02:00
785637254b [Fixed] no img leads to an error
[Added] metadata setting for alternative PDF-Logo filename; translations
[Changed] img-handling in documentsGeneric and header.html.twig

I didn't check for smarty yet!
2024-09-06 18:24:42 +02:00
d555656a38 [OST726416][Added] try+catch for template-exceptions 2024-09-06 01:27:21 +02:00
ce3d8c3e29 [OST726416][Changed] Template Variable 2024-09-06 01:26:10 +02:00
5fa706fa3a [OST726416][Fixed] Template path in dedicated model 2024-09-06 01:23:41 +02:00
d8a1050371 [OST726416][working-state][Changed] smarty-templates
moving files and adjusting code
2024-09-06 01:22:36 +02:00
84225165de [OST726416][Upgrade] smarty-templates to twig
whole rework of the files + readjusting
2024-09-06 01:21:22 +02:00
5c0f3b1f77 [Changed] rename file alias
adjust alias and metadata-entries for Twig && Smarty
2024-09-04 21:53:57 +02:00
7c3eb1895f [Changed] rename file alias 2024-09-03 19:06:16 +02:00
7b898aef8f Merge remote-tracking branch 'origin/dev_2.x_OXID7' into dev_2.x_OXID7
# Conflicts:
#	views/twig/extensions/themes/admin_twig/order_overview.html.twig
2024-09-03 18:36:18 +02:00
4bd3b75931 [Added] twig files 2024-09-03 18:35:45 +02:00
cb355033f8 add includable stand alone template 2024-09-03 09:40:27 +02:00
a32d8bc498 add Twig template block extension 2024-09-03 09:39:57 +02:00
8392de0566 [Changed] engine handler
adjust it for twit ( no safe changes! )
2024-09-02 22:58:49 +02:00
ce05a811a9 [Added] twig multilang 2024-09-02 22:57:16 +02:00
9cdd4dfb1c [Changed] Doks 2024-08-27 16:08:16 +02:00
04e466b999 [Fixed] assets-folder name 2024-08-27 15:59:20 +02:00
dfd22940c8 [Fixed] wrong template alias for d3styles 2024-08-27 15:44:32 +02:00
6ae437ab56 [Fixed] wrong template alias
former aliases needed to be changed to the new ones too
2024-08-27 15:26:13 +02:00
6da3e99a0e [Fixed] TemplateRenderer Getter 2024-08-26 23:43:09 +02:00
e320d0f303 [Fixed] Template Name 2024-08-26 23:42:57 +02:00
3d1389843d [Changed] code-cleanup 2024-08-26 23:42:41 +02:00
2e45d644fe [Fixed] composer.json 2024-08-25 17:04:12 +02:00
be1a961f88 [Changed] general structure to OXID7 Standard ( Metadata, Composer, Constants ) 2024-08-22 20:08:00 +02:00
18b055c7f7 [Changed] general structure to OXID7 Standard 2024-08-22 20:07:37 +02:00
f52ed2c95e [Changed] general structure to OXID7 Standard 2024-08-22 19:40:26 +02:00
90 fichiers modifiés avec 1516 ajouts et 259 suppressions

Voir le fichier

@ -11,15 +11,26 @@
namespace D3\PdfDocuments\Application\Model\AbstractClasses;
use Assert\InvalidArgumentException;
use D3\ModCfg\Application\Model\d3filesystem;
use D3\PdfDocuments\Application\Model\Constants;
use D3\PdfDocuments\Application\Model\Exceptions\pdfGeneratorExceptionAbstract;
use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsGenericInterface as genericInterface;
use OxidEsales\Eshop\Core\Base;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Core\UtilsView;
use OxidEsales\EshopCommunity\Core\Di\ContainerFacade;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use OxidEsales\EshopCommunity\Internal\Framework\Module\Facade\ModuleSettingServiceInterface;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateEngineInterface;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRenderer;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererBridgeInterface;
use OxidEsales\Twig\Resolver\TemplateChain\TemplateNotInChainException;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Smarty;
use Spipu\Html2Pdf\Exception\Html2PdfException;
use Spipu\Html2Pdf\Html2Pdf;
use Twig\Error\Error;
abstract class pdfdocumentsGeneric extends Base implements genericInterface
{
@ -36,7 +47,7 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
public $filenameExtension = 'pdf';
/** @var Smarty */
public $oSmarty;
public $oTemplateEngine;
/** @var string */
public $filename;
@ -47,11 +58,26 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
public function __construct()
{
parent::__construct();
/** @var Smarty $oSmarty */
$this->oSmarty = Registry::getUtilsView()->getSmarty(true);
$this->oTemplateEngine = $this->d3GetTemplateEngine();
}
public function d3GetTemplateEngine() :TemplateEngineInterface
{
$renderer = $this->d3GetTemplateRendererBridge()->getTemplateRenderer();
return $renderer->getTemplateEngine();
}
/**
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function d3GetTemplateRendererBridge(): TemplateRendererBridgeInterface
{
return ContainerFactory::getInstance()->getContainer()
->get(TemplateRendererBridgeInterface::class);
}
public function runPreAction()
{
}
@ -155,16 +181,17 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
/**
* @param int $iSelLang
*/
public function setSmartyVars($iSelLang)
public function setTemplateEngineVars($iSelLang)
{
unset($iSelLang);
$this->oSmarty->assign('config', Registry::getSession()->getConfig());
$this->oSmarty->assign('viewConfig', Registry::getSession()->getConfig()->getActiveView()->getViewConfig());
$this->oSmarty->assign('shop', Registry::getSession()->getConfig()->getActiveShop());
$this->oSmarty->assign('lang', Registry::getLang());
$this->oSmarty->assign('document', $this);
$this->oTemplateEngine->addGlobal('config', Registry::getConfig());
$this->oTemplateEngine->addGlobal('oViewConf', Registry::getConfig()->getActiveView()->getViewConfig());
$this->oTemplateEngine->addGlobal('shop', Registry::getConfig()->getActiveShop());
$this->oTemplateEngine->addGlobal('lang', Registry::getLang());
$this->oTemplateEngine->addGlobal('document', $this);
}
/**
* @param int $iSelLang
*
@ -181,11 +208,19 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
$currTplLang = $lang->getTplLanguage();
$lang->setTplLanguage($iSelLang);
$this->setSmartyVars($iSelLang);
$content = $this->oSmarty->fetch($this->getTemplate());
$lang->setTplLanguage($currTplLang);
$this->setTemplateEngineVars($iSelLang);
try {
$content = $this->oTemplateEngine->render($this->getTemplate(), $this->d3GetTemplateEngine()->getGlobals());
} catch (Error|TemplateNotInChainException $error) {
//Registry::getLogger()->error(dumpVar(__METHOD__." ".__LINE__), [$error->getFile()]);
$error = oxNew(StandardException::class, $error->getMessage());
throw $error;
}
$lang->setTplLanguage($currTplLang);
self::$_blIsAdmin = $blCurrentRenderFromAdmin;
@ -263,14 +298,68 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
/**
* Gets proper file name
*
* @param string $sFilename file name
* @param $filename
*
* @return string
*/
public function makeValidFileName($sFilename)
public function makeValidFileName($filename)
{
$fs = oxNew(d3filesystem::class);
return $fs->filterFilename($sFilename);
// sanitize filename
$filename = preg_replace(
'~
[<>:"/\\\\|?*]| # file system reserved
[\x00-\x1F]| # control characters
[\x7F\xA0\xAD]| # non-printing characters DEL, NO-BREAK SPACE, SOFT HYPHEN
[#\[\]@!$&\'()+,;=]| # URI reserved
[{}^\~`] # URL unsafe characters
~x',
'-',
$filename
);
// avoids ".", ".." or ".hiddenFiles"
$filename = ltrim($filename, '.-');
$filename = $this->beautifyFilename($filename);
// maximize filename length to 255 bytes
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$filename = mb_strcut(
pathinfo($filename, PATHINFO_FILENAME),
0,
255 - ($ext ? strlen($ext) + 1 : 0),
mb_detect_encoding($filename)
) . ($ext ? '.' . $ext : '');
return $filename;
}
public function beautifyFilename($filename)
{
// reduce consecutive characters
$filename = preg_replace([
// "file name.zip" becomes "file-name.zip"
'/ +/',
// "file___name.zip" becomes "file-name.zip"
'/_{2,}/',
// "file---name.zip" becomes "file-name.zip"
'/-+/',
], '-', $filename);
$filename = preg_replace([
// "file--.--.-.--name.zip" becomes "file.name.zip"
'/-*\.-*/',
// "file...name..zip" becomes "file.name.zip"
'/\.{2,}/',
], '.', $filename);
// lowercase for windows/unix interoperability
$filename = mb_strtolower($filename, mb_detect_encoding($filename));
// ".file-name.-" becomes "file-name"
$filename = trim($filename, '.-');
return trim($filename);
}
/**
@ -283,15 +372,19 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface
/**
* @param Html2Pdf $oPdf
* @param $sFilename
* @param $target
* @param $html
* @param $sFilename
* @param $target
* @param $html
*
* @return string|null
* @throws Html2PdfException
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function output(Html2Pdf $oPdf, $sFilename, $target, $html)
{
if ((bool) Registry::getConfig()->getConfigParam('d3PdfDocumentsbDev') === true) {
$moduleSettings = ContainerFactory::getInstance()->getContainer()->get(ModuleSettingServiceInterface::class);
if ($moduleSettings->getBoolean( 'd3PdfDocumentsbDev', Constants::OXID_MODULE_ID )) {
return $this->outputDev($oPdf, $sFilename, $target, $html);
} else {
return $oPdf->output($sFilename, $target);

Voir le fichier

@ -57,19 +57,19 @@ abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInt
* @param int $iSelLang
* @throws InvalidArgumentException
*/
public function setSmartyVars($iSelLang)
public function setTemplateEngineVars($iSelLang)
{
parent::setSmartyVars($iSelLang);
parent::setTemplateEngineVars($iSelLang);
$this->oSmarty->assign('order', $this->getOrder());
$this->oTemplateEngine->addGlobal('order', $this->getOrder());
$oUser = oxNew(User::Class);
$oUser->load($this->getOrder()->getFieldData('oxuserid'));
$this->oSmarty->assign('user', $oUser);
$this->oTemplateEngine->addGlobal('user', $oUser);
$oPayment = oxNew(Payment::class);
$oPayment->loadInLang($iSelLang, $this->getOrder()->getFieldData('oxpaymenttype'));
$this->oSmarty->assign('payment', $oPayment);
$this->oTemplateEngine->addGlobal('payment', $oPayment);
}
/**

Voir le fichier

@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
namespace D3\PdfDocuments\Application\Model;
class Constants
{
public const OXID_MODULE_ID = 'd3PdfDocuments';
}

Voir le fichier

@ -43,6 +43,6 @@ class deliverynotePdf extends pdfdocumentsOrder
*/
public function getTemplate()
{
return 'd3deliverynote_pdf.tpl';
return '@d3PdfDocuments/documents/deliverynote/deliverynote';
}
}

Voir le fichier

@ -41,6 +41,6 @@ class deliverynotewithoutlogoPdf extends deliverynotePdf
*/
public function getTemplate()
{
return 'd3deliverynoteNoLogo_pdf.tpl';
return '@d3PdfDocuments/documents/deliverynote/deliverynoteNoLogo';
}
}

Voir le fichier

@ -95,7 +95,7 @@ class invoicePdf extends pdfdocumentsOrder implements pdfdocumentsOrderinvoiceIn
}
public function getTemplate(){
return 'd3invoice_pdf.tpl';
return '@d3PdfDocuments/documents/invoice/invoice';
}
/**

Voir le fichier

@ -40,6 +40,6 @@ class invoicewithoutlogoPdf extends invoicePdf
* @return string
*/
public function getTemplate(){
return 'd3invoiceNoLogo_pdf.tpl';
return '@d3PdfDocuments/documents/invoice/invoiceNoLogo';
}
}

Voir le fichier

@ -1,3 +0,0 @@
[{$smarty.block.parent}]
[{include file="d3orderoverview_pdfform.tpl"}]

Voir le fichier

@ -8,12 +8,14 @@
* @link http://www.oxidmodule.com
*/
use D3\PdfDocuments\Application\Model\Constants;
$sLangName = "Deutsch";
$aLang = array(
'charset' => 'utf-8',
'SHOP_MODULE_GROUP_d3PdfDocumentsmain' => 'Grundeinstellungen',
'SHOP_MODULE_d3PdfDocumentsbDev' => 'Entwicklermodus',
'SHOP_MODULE_'. Constants::OXID_MODULE_ID.'bDev' => 'Entwicklermodus',
'D3_PDFDOCUMENTS' => 'PDF-Dokumente',
'D3_PDFDOCUMENTS_INVOICE' => 'Rechnung',

Voir le fichier

@ -8,12 +8,14 @@
* @link http://www.oxidmodule.com
*/
use D3\PdfDocuments\Application\Model\Constants;
$sLangName = "English";
$aLang = array(
'charset' => 'utf-8',
'SHOP_MODULE_GROUP_d3PdfDocumentsmain' => 'Basic settings',
'SHOP_MODULE_d3PdfDocumentsbDev' => 'Developer mode',
'SHOP_MODULE_'. Constants::OXID_MODULE_ID.'bDev' => 'Developer mode',
'D3_PDFDOCUMENTS' => 'PDF Documents',
'D3_PDFDOCUMENTS_INVOICE' => 'Invoice',

Voir le fichier

@ -0,0 +1,29 @@
<?php
/**
* See LICENSE file for license details.
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
use D3\PdfDocuments\Application\Model\Constants;
$sLangName = "Deutsch";
$aLang = array(
'charset' => 'utf-8',
'SHOP_MODULE_GROUP_d3PdfDocumentsmain' => 'Grundeinstellungen',
'SHOP_MODULE_'. Constants::OXID_MODULE_ID.'bDev' => 'Entwicklermodus',
'D3_PDFDOCUMENTS' => 'PDF-Dokumente',
'D3_PDFDOCUMENTS_INVOICE' => 'Rechnung',
'D3_PDFDOCUMENTS_INVOICE_WITHOUT_LOGO' => 'Rechnung ohne Logo',
'D3_PDFDOCUMENTS_DELIVERYNOTE' => 'Lieferschein',
'D3_PDFDOCUMENTS_DELIVERYNOTE_WITHOUT_LOGO' => 'Lieferschein ohne Logo',
'D3_PDFDOCUMENTS_PDF_TYPE' => 'Dokument',
'D3_PDFDOCUMENTS_LANGUAGE' => 'Sprache',
'D3_PDFDOCUMENTS_PDF_GENERATE' => 'Dokument erstellen',
);

Voir le fichier

@ -0,0 +1,29 @@
<?php
/**
* See LICENSE file for license details.
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
use D3\PdfDocuments\Application\Model\Constants;
$sLangName = "English";
$aLang = array(
'charset' => 'utf-8',
'SHOP_MODULE_GROUP_d3PdfDocumentsmain' => 'Basic settings',
'SHOP_MODULE_'. Constants::OXID_MODULE_ID.'bDev' => 'Developer mode',
'D3_PDFDOCUMENTS' => 'PDF Documents',
'D3_PDFDOCUMENTS_INVOICE' => 'Invoice',
'D3_PDFDOCUMENTS_INVOICE_WITHOUT_LOGO' => 'Invoice without logo',
'D3_PDFDOCUMENTS_DELIVERYNOTE' => 'Deliverynote',
'D3_PDFDOCUMENTS_DELIVERYNOTE_WITHOUT_LOGO' => 'Deliverynote without logo',
'D3_PDFDOCUMENTS_PDF_TYPE' => 'Document',
'D3_PDFDOCUMENTS_LANGUAGE' => 'Language',
'D3_PDFDOCUMENTS_PDF_GENERATE' => 'Create Document',
);

Voir le fichier

@ -1,47 +0,0 @@
[{assign var="pagePadding" value=","|explode:"45,15,30,25"}] [{* top, right, bottom, left *}]
[{assign var="showLogo" value=$showLogo|default:true}]
[{capture append="pdfBlock_style"}]
[{block name="pdfStyles"}]
[{include file="d3pdfstyles.css"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_header"}]
[{block name="pdfHeader"}]
[{include file="d3pdfheader.tpl" showLogo=$showLogo}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_content"}]
[{* include file="d3pdfrulers.tpl" pagePadding=$pagePadding *}]
[{include file="d3pdffoldmarks.tpl" pagePadding=$pagePadding}]
[{block name="pdfAddressArea"}]
[{include file="d3pdfaddressarea.tpl" addressfile="d3delnote_pdf_recipient.tpl"}]
[{/block}]
[{block name="pdfInformations"}]
[{include file="d3pdfinformations.tpl" documentinformationfile="d3delnote_pdf_informations.tpl"}]
[{/block}]
[{block name="pdfSalutation"}]
[{include file="d3delnote_pdf_salutation.tpl"}]
[{/block}]
[{block name="pdfArticleList"}]
[{include file="d3pdfarticlelist.tpl" showPrices=false}]
[{/block}]
[{block name="pdfConclusion"}]
[{include file="d3delnote_pdf_conclusion.tpl"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_footer"}]
[{block name="pdfFooter"}]
[{include file="d3pdffooter.tpl" pagePadding=$pagePadding}]
[{/block}]
[{/capture}]
[{include file="d3pdfbase.tpl" pagePadding=$pagePadding}]

Voir le fichier

@ -1 +0,0 @@
[{include file="d3deliverynote_pdf.tpl" showLogo=false}]

Voir le fichier

@ -1,13 +0,0 @@
[{assign var="backaddressfile" value=$backaddressfile|default:"d3pdfreturnaddress.tpl"}]
[{assign var="addressfile" value=$addressfile|default:"d3pdfrecipientaddress.tpl"}]
<div class="addressarea">
<div class="returnAddress">
<div>
[{include file=$backaddressfile}]
</div>
</div>
<div class="recipientAddress">
[{include file=$addressfile}]
</div>
</div>

Voir le fichier

@ -1,13 +0,0 @@
[{assign var="showLogo" value=$showLogo|default:true}]
[{block name="pdfHeader"}]
<div class="header">
[{if $showLogo}]
[{* pdf logo is available only in non admin theme *}]
[{assign var="isAdmin" value=$viewConfig->isAdmin()}]
[{$viewConfig->setAdminMode(false)}]
<img class="logo" alt="Logo" src="[{$viewConfig->getImageUrl('pdf_logo.jpg')}]">
[{$viewConfig->setAdminMode($isAdmin)}]
[{/if}]
</div>
[{/block}]

Voir le fichier

@ -1,51 +0,0 @@
[{assign var="pagePadding" value=","|explode:"45,15,30,25"}] [{* top, right, bottom, left *}]
[{assign var="showLogo" value=$showLogo|default:true}]
[{capture append="pdfBlock_style"}]
[{block name="pdfStyles"}]
[{include file="d3pdfstyles.css"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_header"}]
[{block name="pdfHeader"}]
[{include file="d3pdfheader.tpl" showLogo=$showLogo}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_content"}]
[{* include file="d3pdfrulers.tpl" pagePadding=$pagePadding *}]
[{include file="d3pdffoldmarks.tpl" pagePadding=$pagePadding}]
[{block name="pdfAddressArea"}]
[{include file="d3pdfaddressarea.tpl"}]
[{/block}]
[{block name="pdfInformations"}]
[{include file="d3pdfinformations.tpl" documentinformationfile="d3invoice_pdf_informations.tpl"}]
[{/block}]
[{block name="pdfDeliveryAddress"}]
[{include file="d3pdfdeladdress.tpl"}]
[{/block}]
[{block name="pdfSalutation"}]
[{include file="d3invoice_pdf_salutation.tpl"}]
[{/block}]
[{block name="pdfArticleList"}]
[{include file="d3pdfarticlelist.tpl"}]
[{/block}]
[{block name="pdfConclusion"}]
[{include file="d3invoice_pdf_conclusion.tpl"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_footer"}]
[{block name="pdfFooter"}]
[{include file="d3pdffooter.tpl" pagePadding=$pagePadding}]
[{/block}]
[{/capture}]
[{include file="d3pdfbase.tpl" pagePadding=$pagePadding}]

Voir le fichier

@ -1 +0,0 @@
[{include file="d3invoice_pdf.tpl" showLogo=false}]

23
IntelliSenseHelper.php Fichier normal
Voir le fichier

@ -0,0 +1,23 @@
<?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\Modules\Application\Controller {
use OxidEsales\Eshop\Application\Controller\Admin\OrderOverview;
class d3_overview_controller_pdfdocuments_parent extends OrderOverview
{
}
}

Voir le fichier

@ -21,16 +21,9 @@ use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Core\TableViewNameGenerator;
if (false) {
class_alias(
d3_overview_controller_pdfdocuments_parent::class,
OrderOverview::class
);
}
class d3_overview_controller_pdfdocuments extends d3_overview_controller_pdfdocuments_parent
{
/**
/**
* @return bool
* @throws DatabaseConnectionException
*/

Voir le fichier

@ -1,10 +1,11 @@
> [german version](README.md)
[![deutsche Version](https://logos.oxidmodule.com/de2_xs.svg)](README.md)
[![english version](https://logos.oxidmodule.com/en2_xs.svg)](README.en.md)
# PDF Documents
PDF document generator for OXID eShop
Create a wide variety of static or dynamic PDF documents at the touch of a button. The document content is created from Smarty templates.
Create a wide variety of static or dynamic PDF documents at the touch of a button. The document content is created from templates (Smarty or Twig).
At the orders of your OXID shop you have the option of creating an invoice and delivery note.
@ -12,8 +13,8 @@ The module can be easily extended to adapt existing documents or add new ones. E
## System requirements:
- installed OXID eShop version from 6.1
- PHP version for which installation packages are available (PHP 7 + 8)
- installed OXID eShop version from 7.0 - 7.1
- PHP version for which installation packages are available (PHP 8)
- Installation via Composer
## Compatibility:
@ -25,7 +26,7 @@ If the `OXID Invoice PDF` module is to be completely replaced by the `D3 PDF Doc
## Installation:
```bash
composer require d3/pdfdocuments:^1.0 --update-no-dev
composer require d3/pdfdocuments:^2.0 --update-no-dev
```
Detailed installation instructions can be found [online](https://docs.oxidmodule.com/PDF-Dokumente/) and in the docs directory of this package. The module manual is also available there.
@ -38,7 +39,8 @@ Detailed installation instructions can be found [online](https://docs.oxidmodule
## Credits:
- PDF logo made by Dimitriy Morilubov from www.flaticon.com
- PDF logo made by Dimitriy Morilubov by www.flaticon.com
- example company logo by https://www.logologo.com/
## License

Voir le fichier

@ -1,10 +1,11 @@
> [english version](README.en.md)
[![deutsche Version](https://logos.oxidmodule.com/de2_xs.svg)](README.md)
[![english version](https://logos.oxidmodule.com/en2_xs.svg)](README.en.md)
# PDF-Dokumente
PDF-Dokumentgenerator für OXID eShop
Erstellen Sie unterschiedliche statische oder dynamische PDF-Dokumente auf Kopfdruck. Der Dokumentinhalt wird aus Smartytemplates erstellt.
Erstellen Sie unterschiedliche statische oder dynamische PDF-Dokumente auf Kopfdruck. Der Dokumentinhalt wird aus Templates (Smarty bzw. Twig) erstellt.
An den Bestellungen Ihres OXID-Shops steht Ihnen die Erstellung von Rechnung und Lieferschein zur Verfügung.
@ -12,8 +13,8 @@ Das Modul kann einfach erweitert werden, um bestehende Dokumente anzupassen oder
## Systemanforderungen:
- installierter OXID eShop in Version ab 6.1
- PHP-Version, für die Installationspakete verfügbar sind (PHP 7 + 8)
- installierter OXID eShop in Version ab 7.0 - 7.1
- PHP-Version, für die Installationspakete verfügbar sind (PHP 8)
- Installation via Composer
## Kompatibilität:
@ -25,7 +26,7 @@ Soll das `OXID Invoice-PDF`-Modul komplett vom `PDF Dokumente` Modul ersetzt wer
## Installation:
```bash
composer require d3/pdfdocuments:^1.0 --update-no-dev
composer require d3/pdfdocuments:^2.0 --update-no-dev
```
Eine detaillierte Installationsanleitung finden Sie [online](https://docs.oxidmodule.com/PDF-Dokumente/) und im docs-Verzeichnis dieses Pakets. Dort ist ebenfalls das Modulhandbuch hinterlegt.
@ -39,6 +40,7 @@ Eine detaillierte Installationsanleitung finden Sie [online](https://docs.oxidmo
## Danksagung:
- PDF-Logo erstellt von Dimitriy Morilubov von www.flaticon.com
- Beispielfirmenlogo von https://www.logologo.com/
## Lizenz

BIN
assets/out/img/clogo.jpg Fichier normal

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 4.4 KiB

Voir le fichier

Avant

Largeur:  |  Hauteur:  |  Taille: 1.9 KiB

Après

Largeur:  |  Hauteur:  |  Taille: 1.9 KiB

Voir le fichier

Avant

Largeur:  |  Hauteur:  |  Taille: 4.8 KiB

Après

Largeur:  |  Hauteur:  |  Taille: 4.8 KiB

Voir le fichier

@ -7,7 +7,10 @@
"modules",
"eShop",
"d3",
"PDF"
"PDF",
"documents",
"invoice",
"delivery note"
],
"authors": [
{
@ -21,25 +24,15 @@
"license": [
"GPL-3.0-or-later"
],
"extra": {
"oxideshop": {
"blacklist-filter": [
"composer.json",
"docs/**/*.*"
],
"target-directory": "d3/pdfdocuments"
}
},
"require": {
"php": "^7.0 || ^8.0",
"oxid-esales/oxideshop-ce": "6.3 - 6.14",
"spipu/html2pdf": "^5.2",
"d3/modcfg": "^5.3.6.000 || ^6",
"php": "^8.0",
"oxid-esales/oxideshop-ce": "7.0 - 7.1",
"spipu/html2pdf": "~5.2.8",
"beberlei/assert": "^3.3.2"
},
"autoload": {
"psr-4": {
"D3\\PdfDocuments\\": "../../../source/modules/d3/pdfdocuments"
"D3\\PdfDocuments\\": ""
}
}
}

29
development.md Fichier normal
Voir le fichier

@ -0,0 +1,29 @@
# Entwicklungen
Um das Modul anzupassen, gibt es verschiedene Möglichkeiten:
## Grundsätzliches
Wir empfehlen dringend, alle Veränderungen bestehender Dokumente und auch neue Dokumente in einem eigenen Modul abzulegen,
um die Updatefähigkeit zu behalten.
## neue Dokumente hinzufügen
Neue Dokumente können analog zu den Bestehenden angelegt werden. Jedes Dokument besteht aus der entsprechenden
PHP-Klasse (unter Application/Model/Documents) und deren Template (unter views/.../documents). Verwenden Sie die
Bestandsdokumente als Implementierungsreferenz.
Dokumentlisten sind für den Bestellbereich im Shopadmin sowie für die Generierung über den D3 Auftragsmanagers
enthalten (unter Application/Model/Registries). Überladen Sie die Klassen und ergänzen Sie im Konstruktor Ihre neuen
Dokumente.
## bestehende Dokumente verändern
Die Grundangaben eines Dokuments sind in dessen PHP-Datei definiert. Überladen Sie diese bei Bedarf und ändern die
Einstellung.
Die Inhalte der Dokumente sind in Templates definiert. In den Templates sind Blöcke eingerichtet, die mit den
Überladungsmöglichkeiten des Shops ergänzt oder ersetzt werden können.
Bei umfangreichen Anpassungen kann es sinnvoll sein, eigene Templates anzulegen, die in der PHP-Klasse des Dokuments als
Quelle definiert wird.

Voir le fichier

@ -7,7 +7,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased](https://git.d3data.de/D3Public/pdfdokumente/compare/1.0.4.0...rel_1.x)
## [Unreleased](https://git.d3data.de/D3Public/pdfdokumente/compare/2.0.1.1...rel_2.x)
## [2.0.1.1](https://git.d3data.de/D3Public/pdfdokumente/compare/2.0.1.0...2.0.1.1) - 2024-10-04
### Fixed
- Syntax der Steuerangaben in Twig-Templates
## [2.0.1.0](https://git.d3data.de/D3Public/pdfdokumente/compare/2.0.0.0...2.0.1.0) - 2024-10-01
### Added
- Entwicklungshandbuch
- Überladungsblock für Unternehmenslogo
### Fixed
- CSS wird nicht als Referenz sondern inline eingebunden
- Entwicklermodus kann konfiguriert werden
- Smarty Templates
### Removed
- Modul Connector Bedingung
## [2.0.0.0](https://git.d3data.de/D3Public/pdfdokumente/compare/1.0.4.0...2.0.0.0) - 2024-09-12
### Added
- installierbar in OXID 7.0 && 7.1 (CE 7.0.x - 7.1.x)
- Support für Smarty- und Twig-Templates
### Removed
- Support für OXID < 7.0
## [1.0.4.0](https://git.d3data.de/D3Public/pdfdokumente/compare/1.0.3.1...1.0.4.0) - 2023-12-22
### Added

Voir le fichier

@ -1,9 +1,9 @@
{
"title": "<i class='fab fa-d3 d3fa-color-blue'></i> PDF Dokumente",
"moduleversion": "1.0.4.0",
"moduleversion": "2.0.1.1",
"titledesc": "für den Oxid eShop",
"author": "D³ Data Development",
"moduledate": "22.12.2023",
"moduledate": "04.10.2024",
"editors": "",
"tagline": "",
"image": "",

Voir le fichier

@ -3,17 +3,14 @@ title: Systemanforderungen
---
* PHP Version
* 7.0.x bis 8.x
* 8.x
* Shopversionen / -editionen
* OXID eShop Community Edition (CE), Professional Edition (PE) oder Enterprise Edition (EE) in Compilation Version
* 6.1.x
* 6.2.x
* 6.3.x
* 6.4.x
* 6.5.x
* OXID eShop Community Edition (CE), Professional Edition (PE) oder Enterprise Edition (EE) in Compilation Version
* 7.0.x
* 7.1.x
* Themes
* Diese Modul bindet sich nicht in Frontendthemes ein und ist daher davon unabhängig
* (D3) Modul-Connector ([kostenfrei bei D3 erhältlich](https://www.oxidmodule.com/connector/)) ab Version 5.3.6.0
* Template-Engine
* Smarty
* Twig
* Installation via [Composer](https://getcomposer.org)

Voir le fichier

@ -2,4 +2,4 @@
title: Kompatibilität mit anderen Modulen
---
Das PDF Dokumente-Modul integriert sich auch in die Erweiterung "Auftragsmanager" von (D3) Data Development, sofern dieses im Shop installiert wurde. Diese Integration wurde für die Version 4.0.0.0 des "Auftragsmanager"-Moduls entwickelt.
Das PDF Dokumente-Modul integriert sich auch in die Erweiterung "Auftragsmanager" von (D3) Data Development, sofern dieses im Shop installiert wurde. Diese Integration wurde für die Version 6.0.0.0 des "Auftragsmanager"-Moduls entwickelt.

Voir le fichier

@ -2,8 +2,7 @@
title: Dateien löschen
---
Löschen Sie den Ordner `{$modulefolder}` und seine enthaltenen Elemente aus dem Verzeichnis `source/modules/d3` Ihres Shops.
Bestätigen Sie anschließend im Shopadmin unter [ Erweiterungen ] -> [ Module ] -> [ Installierte Shop-Module ] die Nachricht:
Sofern nötig, bestätigen Sie im Shopadmin unter [ Erweiterungen ] -> [ Module ] -> [ Installierte Shop-Module ] die Nachricht:
> Es gibt registrierte Erweiterungen im eShop, deren Verzeichnis nicht vorhanden ist.
> Möchten Sie alle Modulinformationen einschließlich Konfigurationseinstellungen und Blockinformationen für Templates löschen?

Voir le fichier

@ -2,8 +2,8 @@
title: Funktionen
---
Erstellen Sie unterschiedlichste statische oder dynamische PDF-Dokument auf Kopfdruck. Der Dokumentinhalt wird aus Smartytemplates erstellt.
Erstellen Sie unterschiedlichste statische oder dynamische PDF-Dokument auf Kopfdruck. Der Dokumentinhalt wird aus Templates (Smarty bzw. Twig) erstellt.
An den Bestellungen Ihres OXID-Shops steht Ihnen die Erstellung von Rechnung und Lieferschein zur Verfügung.
Das Modul kann einfach erweitert werden, um bestehende Dokumente anzupassen oder Neue hinzuzufügen.
Das Modul kann einfach erweitert werden, um bestehende Dokumente anzupassen oder Neue hinzuzufügen.

Voir le fichier

@ -2,7 +2,7 @@
title: Anpassungen an bestehenden Dokumenten
---
Die Dokumente werden aus Smartytemplates erstellt, die Sie im `Application/views/tpl/documents` finden.
Die Dokumente werden aus Templates (Smarty bzw. Twig) erstellt, die Sie im Ordner `views/smarty/documents` bzw. `views/twig/documents` finden.
Für Änderungen einzelner Dokumentbereiche können Sie die darin notierten Templateblöcke in einem eigenen Modul überladen und deren Inhalt so verändern oder ergänzen. So müssen Sie das Originalmodul nicht verändern.

Voir le fichier

@ -14,9 +14,9 @@ Layouts können mit inline CSS-Styles definiert werden. Die Einbindung externer
Beachten Sie bitte, dass auch nur ein CSS-Subset unterstützt wird. Mit etwas CSS-Kreativität sollten sich die üblichen Formatierungen dennoch deutlich einfacher umsetzen lassen, als dies direkt in PHP-Programmierung möglich wäre.
## Smarty
## Templates
Innerhalb der Templates steht Ihnen die komplette Smarty-Funktionalität zur Verfügung.
Innerhalb der Templates steht Ihnen die komplette Twig- bzw. Smarty-Funktionalität zur Verfügung.
## Debug

Voir le fichier

@ -8,6 +8,7 @@
* @link http://www.oxidmodule.com
*/
use D3\PdfDocuments\Application\Model\Constants as Constants;
use D3\PdfDocuments\Modules\Application\Controller\d3_overview_controller_pdfdocuments;
use OxidEsales\Eshop\Application\Controller\Admin\OrderOverview;
@ -16,20 +17,17 @@ use OxidEsales\Eshop\Application\Controller\Admin\OrderOverview;
*/
$sMetadataVersion = '2.1';
$logo = '<img src="https://logos.oxidmodule.com/d3logo.svg" alt="(D3)" style="height:1em;width:1em">';
$sModuleId = 'd3PdfDocuments';
/**
* Module information
*/
$aModule = [
'id' => $sModuleId,
'id' => Constants::OXID_MODULE_ID,
'title' => [
'de' => $logo.' PDF-Dokumente',
'en' => $logo.' PDF documents',
'de' => '(D3) PDF-Dokumente',
'en' => '(D3) PDF documents',
],
'version' => '1.0.4.0',
'author' => 'D&sup3; Data Development (Inh.: Thomas Dartsch)',
'version' => '2.0.1.1',
'author' => 'D3 Data Development (Inh.: Thomas Dartsch)',
'email' => 'support@shopmodule.com',
'url' => 'https://www.oxidmodule.com/',
'extend' => [
@ -38,51 +36,58 @@ $aModule = [
'controllers' => [],
'thumbnail' => 'picture.svg',
'templates' => [
'd3orderoverview_pdfform.tpl' => 'd3/pdfdocuments/Application/views/tpl/admin/orderoverview_pdfform.tpl',
//Admin
'@' . Constants::OXID_MODULE_ID . '/admin/d3orderoverview_pdfform.tpl' => 'views/smarty/admin/orderoverview_pdfform.tpl',
'd3deliverynote_pdf.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/deliverynote/deliverynote.tpl',
'd3deliverynoteNoLogo_pdf.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/deliverynote/deliverynoteNoLogo.tpl',
'd3delnote_pdf_informations.tpl'=> 'd3/pdfdocuments/Application/views/tpl/documents/deliverynote/inc/informations.tpl',
'd3delnote_pdf_recipient.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/deliverynote/inc/recipientAddress.tpl',
'd3delnote_pdf_salutation.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/deliverynote/inc/salutation.tpl',
'd3delnote_pdf_conclusion.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/deliverynote/inc/conclusion.tpl',
// Frontend - Flow - Deliverynote
'@' . Constants::OXID_MODULE_ID . '/documents/deliverynote/deliverynote.tpl' => 'views/smarty/documents/deliverynote/deliverynote.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/deliverynote/deliverynoteNoLogo.tpl' => 'views/smarty/documents/deliverynote/deliverynoteNoLogo.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/deliverynote/informations.tpl' => 'views/smarty/documents/deliverynote/inc/informations.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/deliverynote/recipientAddress.tpl' => 'views/smarty/documents/deliverynote/inc/recipientAddress.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/deliverynote/salutation.tpl' => 'views/smarty/documents/deliverynote/inc/salutation.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/deliverynote/conclusion.tpl' => 'views/smarty/documents/deliverynote/inc/conclusion.tpl',
'd3invoice_pdf.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/invoice/invoice.tpl',
'd3invoiceNoLogo_pdf.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/invoice/invoiceNoLogo.tpl',
'd3invoice_pdf_informations.tpl'=> 'd3/pdfdocuments/Application/views/tpl/documents/invoice/inc/informations.tpl',
'd3invoice_pdf_salutation.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/invoice/inc/salutation.tpl',
'd3invoice_pdf_conclusion.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/invoice/inc/conclusion.tpl',
'd3invoice_pdf_payinfo.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/invoice/inc/payinfo.tpl',
// Frontend - Flow - Invoice
'@' . Constants::OXID_MODULE_ID . '/documents/invoice/invoice.tpl' => 'views/smarty/documents/invoice/invoice.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/invoice/invoiceNoLogo.tpl' => 'views/smarty/documents/invoice/invoiceNoLogo.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/invoice/informations.tpl' => 'views/smarty/documents/invoice/inc/informations.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/invoice/salutation.tpl' => 'views/smarty/documents/invoice/inc/salutation.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/invoice/conclusion.tpl' => 'views/smarty/documents/invoice/inc/conclusion.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/invoice/payinfo.tpl' => 'views/smarty/documents/invoice/inc/payinfo.tpl',
'd3pdfbase.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/page/base.tpl',
'd3pdfheader.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/page/header.tpl',
'd3pdffooter.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/page/footer.tpl',
'd3pdfreturnaddress.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/page/returnaddress.tpl',
// Frontend - Flow - Inc - Page
'@' . Constants::OXID_MODULE_ID . '/documents/inc/page/base.tpl' => 'views/smarty/documents/inc/page/base.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/page/header.tpl' => 'views/smarty/documents/inc/page/header.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/page/footer.tpl' => 'views/smarty/documents/inc/page/footer.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/page/returnaddress.tpl' => 'views/smarty/documents/inc/page/returnaddress.tpl',
'd3pdfaddressarea.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/elements/addressarea.tpl',
'd3pdfrecipientaddress.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/elements/recipientAddress.tpl',
'd3pdfinformations.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/elements/informations.tpl',
'd3pdfdeladdress.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/elements/deliveryaddress.tpl',
'd3pdfarticlelist.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/elements/articlelist.tpl',
'd3pdfarticlecostsummary.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/elements/articlecostssummary.tpl',
'd3pdffoldmarks.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/elements/foldmarks.tpl',
// Frontend - Flow - Inc - Elements
'@' . Constants::OXID_MODULE_ID . '/documents/inc/elements/addressarea.tpl' => 'views/smarty/documents/inc/elements/addressarea.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/elements/recipientAddress.tpl' => 'views/smarty/documents/inc/elements/recipientAddress.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/elements/informations.tpl' => 'views/smarty/documents/inc/elements/informations.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/elements/deliveryaddress.tpl' => 'views/smarty/documents/inc/elements/deliveryaddress.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/elements/articlelist.tpl' => 'views/smarty/documents/inc/elements/articlelist.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/elements/articlecostssummary.tpl' => 'views/smarty/documents/inc/elements/articlecostssummary.tpl',
'@' . Constants::OXID_MODULE_ID . '/documents/inc/elements/foldmarks.tpl' => 'views/smarty/documents/inc/elements/foldmarks.tpl',
'd3pdfstyles.css' => 'd3/pdfdocuments/out/src/css/pdfStyling.css',
'd3pdfrulers.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/helper/rulers.tpl',
// Frontend - Flow - Inc - Helper
'@' . Constants::OXID_MODULE_ID . '/documents/inc/helper/rulers.tpl' => 'views/smarty/documents/inc/helper/rulers.tpl',
// Frontend - Flow - Inc - Styles
'@' . Constants::OXID_MODULE_ID . '/assets/d3pdfstyles.css.tpl' => 'views/smarty/assets/pdfStyling.css.tpl',
],
'events' => [],
'blocks' => [
[
'template' => 'order_overview.tpl',
'block' => 'admin_order_overview_export',
'file' => 'Application/views/admin/blocks/order_overview.tpl'
'file' => 'views/smarty/blocks/order_overview.tpl'
]
],
'settings' => [
[
'group' => $sModuleId.'main',
'name' => $sModuleId.'bDev',
'group' => Constants::OXID_MODULE_ID.'main',
'name' => Constants::OXID_MODULE_ID.'bDev',
'type' => 'bool',
'value' => false
]

Voir le fichier

@ -0,0 +1,3 @@
[{$smarty.block.parent}]
[{include file="@d3PdfDocuments/admin/d3orderoverview_pdfform.tpl"}]

Voir le fichier

@ -0,0 +1,46 @@
[{assign var="pagePadding" value=","|explode:"45,15,30,25"}] [{* top, right, bottom, left *}]
[{assign var="showLogo" value=$showLogo|default:true}]
[{capture append="pdfBlock_style"}]
[{block name="pdfStyles"}]
[{include file="@d3PdfDocuments/assets/d3pdfstyles.css.tpl"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_header"}]
[{block name="pdfHeader"}]
[{include file="@d3PdfDocuments/documents/inc/page/header.tpl" showLogo=$showLogo}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_content"}]
[{include file="@d3PdfDocuments/documents/inc/elements/foldmarks.tpl" pagePadding=$pagePadding}]
[{block name="pdfAddressArea"}]
[{include file="@d3PdfDocuments/documents/inc/elements/addressarea.tpl" addressfile="@d3PdfDocuments/documents/deliverynote/recipientAddress.tpl"}]
[{/block}]
[{block name="pdfInformations"}]
[{include file="@d3PdfDocuments/documents/inc/elements/informations.tpl" documentinformationfile="@d3PdfDocuments/documents/deliverynote/informations.tpl"}]
[{/block}]
[{block name="pdfSalutation"}]
[{include file="@d3PdfDocuments/documents/deliverynote/salutation.tpl"}]
[{/block}]
[{block name="pdfArticleList"}]
[{include file="@d3PdfDocuments/documents/inc/elements/articlelist.tpl" showPrices=false}]
[{/block}]
[{block name="pdfConclusion"}]
[{include file="@d3PdfDocuments/documents/deliverynote/conclusion.tpl"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_footer"}]
[{block name="pdfFooter"}]
[{include file="@d3PdfDocuments/documents/inc/page/footer.tpl" pagePadding=$pagePadding}]
[{/block}]
[{/capture}]
[{include file="@d3PdfDocuments/documents/inc/page/base.tpl" pagePadding=$pagePadding}]

Voir le fichier

@ -0,0 +1 @@
[{include file="@d3PdfDocuments/documents/deliverynote/deliverynote.tpl" showLogo=false}]

Voir le fichier

@ -0,0 +1,13 @@
[{assign var="backaddressfile" value=$backaddressfile|default:"@d3PdfDocuments/documents/inc/page/returnaddress.tpl"}]
[{assign var="addressfile" value=$addressfile|default:"@d3PdfDocuments/documents/inc/elements/recipientAddress.tpl"}]
<div class="addressarea">
<div class="returnAddress">
<div>
[{include file=$backaddressfile}]
</div>
</div>
<div class="recipientAddress">
[{include file=$addressfile}]
</div>
</div>

Voir le fichier

@ -54,7 +54,7 @@
<nobreak>
<table class="article_costs_table">
[{block name="d3_article_costs_summary"}]
[{include file="d3pdfarticlecostsummary.tpl"}]
[{include file="@d3PdfDocuments/documents/inc/elements/articlecostssummary.tpl"}]
[{/block}]
</table>
</nobreak>

Voir le fichier

@ -2,7 +2,7 @@
[{assign var="pagePadding" value=$pagePadding|default:$defaultPagePadding}]
[{* rulers *}]
[{* include file="d3pdfrulers.tpl" pagePadding=$pagePadding *}]
[{* include file="@d3PdfDocuments/documents/inc/helper/rulers" pagePadding=$pagePadding *}]
<style>
.rulerItemHorizontal {

Voir le fichier

@ -0,0 +1,11 @@
[{assign var="showLogo" value=$showLogo|default:true}]
[{block name="pdfHeader"}]
<div class="header">
[{if $showLogo}]
[{block name="pdfHeaderLogo"}]
<img class="logo" alt="Logo" src="[{$oViewConf->getModulePath('d3PdfDocuments', 'out/img/clogo.jpg')}]">
[{/block}]
[{/if}]
</div>
[{/block}]

Voir le fichier

@ -5,7 +5,7 @@
[{oxmultilang ident="D3_PDFDOCUMENTS_USED_PAYMENTMETHOD" suffix="COLON"}]
[{$payment->getFieldData('oxdesc')}]<br>
[{include file="d3invoice_pdf_payinfo.tpl"}]
[{include file="@d3PdfDocuments/documents/invoice/payinfo.tpl"}]
</div>
[{/block}]

Voir le fichier

@ -0,0 +1,51 @@
[{assign var="pagePadding" value=","|explode:"45,15,30,25"}] [{* top, right, bottom, left *}]
[{assign var="showLogo" value=$showLogo|default:true}]
[{capture append="pdfBlock_style"}]
[{block name="pdfStyles"}]
[{include file="@d3PdfDocuments/assets/d3pdfstyles.css.tpl"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_header"}]
[{block name="pdfHeader"}]
[{include file="@d3PdfDocuments/documents/inc/page/header.tpl" showLogo=$showLogo}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_content"}]
[{* include file="@d3PdfDocuments/documents/inc/helper/rulers" pagePadding=$pagePadding *}]
[{include file="@d3PdfDocuments/documents/inc/elements/foldmarks.tpl" pagePadding=$pagePadding}]
[{block name="pdfAddressArea"}]
[{include file="@d3PdfDocuments/documents/inc/elements/addressarea.tpl"}]
[{/block}]
[{block name="pdfInformations"}]
[{include file="@d3PdfDocuments/documents/inc/elements/informations.tpl" documentinformationfile="@d3PdfDocuments/documents/invoice/informations.tpl"}]
[{/block}]
[{block name="pdfDeliveryAddress"}]
[{include file="@d3PdfDocuments/documents/inc/elements/deliveryaddress.tpl"}]
[{/block}]
[{block name="pdfSalutation"}]
[{include file="@d3PdfDocuments/documents/invoice/salutation.tpl"}]
[{/block}]
[{block name="pdfArticleList"}]
[{include file="@d3PdfDocuments/documents/inc/elements/articlelist.tpl"}]
[{/block}]
[{block name="pdfConclusion"}]
[{include file="@d3PdfDocuments/documents/invoice/conclusion.tpl"}]
[{/block}]
[{/capture}]
[{capture append="pdfBlock_footer"}]
[{block name="pdfFooter"}]
[{include file="@d3PdfDocuments/documents/inc/page/footer.tpl" pagePadding=$pagePadding}]
[{/block}]
[{/capture}]
[{include file="@d3PdfDocuments/documents/inc/page/base.tpl" pagePadding=$pagePadding}]

Voir le fichier

@ -0,0 +1 @@
[{include file="@d3PdfDocuments/documents/invoice/invoice.tpl" showLogo=false}]

Voir le fichier

@ -0,0 +1,46 @@
{% if edit and oView.d3CanExport() %}
<br>
<form name="d3CreatePdf" id="d3CreatePdf" action="{{ oViewConf.getSelfLink() }}" method="post" target="d3ExpPDF">
{{ oViewConf.getHiddenSid()|raw }}
<input type="hidden" name="cl" value="order_overview">
<input type="hidden" name="fnc" value="d3CreatePDF">
<input type="hidden" name="oxid" value="{{ oxid }}">
<fieldset style="padding: 5px">
<legend>{{ translate({ ident: "D3_PDFDOCUMENTS" }) }}</legend>
<table style="width: 100%">
<tr>
<td rowspan="3">
<img src="{{ oViewConf.getModuleUrl('d3PdfDocuments', 'out/img/pdf.svg') }}" style="height:4em;width:4em" alt="{{ translate({ ident: "D3_PDFDOCUMENTS" }) }}">
</td>
<td style="vertical-align: top; text-align: right" class="edittext">
<label for="pdftype">{{ translate({ ident: "D3_PDFDOCUMENTS_PDF_TYPE" }) }}</label>:&nbsp;
<select id="pdftype" name="pdftype" class="editinput" style="width:80px;">
{% block d3_pdfdocuments_order_overview_pdfTypeOptions %}
{% set generatorList = oView.d3getGeneratorList() %}
{% for generator in generatorList.getList() %}
<option value="{{ generator.getRequestId() }}">{{ translate({ ident: generator.getTitleIdent() }) }}</option>
{% endfor %}
{% endblock %}
</select>
</td>
</tr>
<tr>
<td style="text-align: right" class="edittext">
<label for="pdflanguage">{{ translate({ ident: "D3_PDFDOCUMENTS_LANGUAGE" }) }}</label>
<select id="pdflanguage" name="pdflanguage" class="saveinnewlanginput" style="width:80px;">
{% for lang, slang in alangs %}
<option value="{{ lang }}" {% if lang == "0" %}SELECTED{% endif %}>{{ slang }}</option>
{% endfor %}
</select>
</td>
</tr>
<tr>
<td style="text-align: right" class="edittext"><br/>
<input type="submit" class="edittext" name="save" value="{{ translate({ ident: "D3_PDFDOCUMENTS_PDF_GENERATE" }) }}">
<iframe name="d3ExpPDF" style="width: 0; height: 0; border: none; display:none;"></iframe>
</td>
</tr>
</table>
</fieldset>
</form>
{% endif %}

Voir le fichier

@ -0,0 +1,219 @@
table{
font-family: "helvetica";
}
.header {
padding: 5mm;
height: 35mm;
width: 100%;
position: relative;
}
.header img.logo {
float: right;
margin: 10mm;
margin-right: 0;
}
.addressarea,
.deliveryaddress {
left: 0;
width: 80mm;
height: 45mm;
position: relative;
}
.deliveryaddress {
margin-top: 10mm;
height: 27.3mm;
}
.addressarea .returnAddress,
.addressarea .recipientAddress {
position: relative;
}
.addressarea .returnAddress {
height: 17.7mm;
font-size: 8px;
}
.addressarea .returnAddress div {
padding-top: 3mm;
}
.addressarea .recipientAddress {
height: 27.3mm;
}
.addressarea .recipientAddress .location,
.deliveryaddress .location {
font-weight: bold;
}
.addressarea .recipientAddress .country {
padding-top: 5mm;
}
.deliveryaddress .headline {
font-size: 10px;
padding-bottom: 2mm;
}
.informations {
width: 75mm;
right: 0;
top: 5mm;
position: absolute;
}
.contactinformations,
.bankaccountinformations,
.documentinformations {
margin-bottom: 5mm;
}
.contactinformations div,
.bankaccountinformations div,
.documentinformations div {
text-align: right;
font-size: 11px;
}
.contactinformations div.headline,
.bankaccountinformations div.headline,
.documentinformations div.headline {
font-weight: bold;
}
.salutation {
margin-top: 5mm;
}
.salutation .documenttype {
font-weight: bold;
margin-bottom: 5mm;
}
.article_table,
.article_table_prices {
width: 100%;
margin-top: 5mm;
border-spacing: 0;
border-collapse: collapse;
}
.article_table th,
.article_table td,
.article_table_prices th,
.article_table_prices td {
padding-bottom: 2mm;
vertical-align: top;
}
.article_table th,
.article_table_prices th {
border-bottom: solid 0.75pt #000;
font-weight: normal;
font-size: 11px;
}
.article_table td,
.article_table_prices td {
padding-top: 2mm;
font-size: 12px;
}
.article_table th.amount,
.article_table td.amount {
width: 10%;
}
.article_table_prices th.amount,
.article_table_prices td.amount,
.article_table_prices th.tax,
.article_table_prices td.tax {
width: 10%;
}
.article_table_prices th.tax,
.article_table_prices td.tax {
text-align: right;
padding-right: 0;
}
.article_table th.description,
.article_table td.description {
width: 90%;
}
.article_table_prices th.description,
.article_table_prices td.description {
width: 50%;
}
.article_table td.description .artnr,
.article_table_prices td.description .artnr {
font-size: 9px;
}
.article_table_prices th.unitPrice,
.article_table_prices td.unitPrice,
.article_table_prices th.totalPrice,
.article_table_prices td.totalPrice {
width: 15%;
text-align: right;
}
.article_table td.amount,
.article_table_prices td.amount {
text-align: right;
padding-right: 10mm;
}
.article_table_prices td.unitPrice,
.article_table_prices td.totalPrice {
text-align: right;
padding-right: 0;
}
.article_costs_table{
width: 100%;
border-spacing: 0;
border-collapse: collapse;
}
.article_costs_table .indent {
width: 10%;
}
.article_costs_table .description {
width: 75%;
}
.article_costs_table td {
padding-bottom: 5px;
padding-top: 5px;
font-size: 12px;
}
.article_costs_table .values {
width: 15%;
margin-right: -2.2px;
text-align: right;
}
.article_costs_table .sumnetto td {
border-top: 0.75pt solid #000;
}
.article_costs_table .voucherdiscount td,
.article_costs_table .sumbrutto td {
border-bottom: solid 0.75pt #000;
}
.article_costs_table .totalseparator td {
height: 0;
line-height: 0;
}
.article_costs_table .totalseparator td,
.article_costs_table .totalsum td {
border-bottom: solid 0.75pt #000;
font-weight: bold;
}
.article_costs_table .totalsum td {
border-bottom: double 2pt #000;
}
.conclusion_payment,
.conclusion_thankyou {
margin-top: 5mm;
font-size: 12px;
}
.footer{
width: 173mm;
font-size: 9px;
position: relative;
margin: 0;
padding: 0;
}
.footer table {
border-top: solid 0.75pt #000;
width: 100%;
position: relative;
}
.footerLeft,
.footerCenter,
.footerRight {
width: 33%;
padding: 0 2mm;
}

Voir le fichier

@ -0,0 +1,46 @@
{% set pagePadding = "45,15,25,25"|split(",") %} {# top, right, bottom, left #}
{% set showLogo = showLogo|default(1) %}
{% set pdfBlock_style %}
{% block pdfStyles %}
{% include "@d3PdfDocuments/assets/pdfStyling.css.twig" %}
{% endblock %}
{% endset %}
{% set pdfBlock_header %}
{% block pdfHeader %}
{% include "@d3PdfDocuments/documents/inc/page/header.html.twig" with {showLogo: showLogo} %}
{% endblock %}
{% endset %}
{% set pdfBlock_content %}
{% include "@d3PdfDocuments/documents/inc/elements/foldmarks.html.twig" with {pagePadding: pagePadding} %}
{% block pdfAddressArea %}
{% include "@d3PdfDocuments/documents/inc/elements/addressarea.html.twig" with {addressfile: "@d3PdfDocuments/documents/deliverynote/inc/recipientAddress.html.twig"} %}
{% endblock %}
{% block pdfInformations %}
{% include "@d3PdfDocuments/documents/inc/elements/informations.html.twig" with {documentinformationfile: "@d3PdfDocuments/documents/deliverynote/inc/informations.html.twig"} %}
{% endblock %}
{% block pdfSalutation %}
{% include "@d3PdfDocuments/documents/deliverynote/inc/salutation.html.twig" %}
{% endblock %}
{% block pdfArticleList %}
{% include "@d3PdfDocuments/documents/inc/elements/articlelist.html.twig" with {showPrices: 0} %}
{% endblock %}
{% block pdfConclusion %}
{% include "@d3PdfDocuments/documents/deliverynote/inc/conclusion.html.twig" %}
{% endblock %}
{% endset %}
{% set pdfBlock_footer %}
{% block pdfFooter %}
{% include "@d3PdfDocuments/documents/inc/page/footer.html.twig" with {pagePadding: pagePadding} %}
{% endblock %}
{% endset %}
{% include "@d3PdfDocuments/documents/inc/page/base.html.twig" with {pagePadding: pagePadding} %}

Voir le fichier

@ -0,0 +1 @@
{% include "@d3PdfDocuments/documents/deliverynote/deliverynote.html.twig" with {showLogo: 0} %}

Voir le fichier

@ -0,0 +1,6 @@
{% block conclusion %}
<nobreak>
{% block conclusion_thankyou %}
{% endblock %}
</nobreak>
{% endblock %}

Voir le fichier

@ -0,0 +1,10 @@
{% block informations %}
<div class="documentinformations">
{% block pdfDocumentInformations %}
<div>
{% set dateFormat = 'D3_PDFDOCUMENTS_DATE_FORMAT'|translate %}
{{ translate({ ident: "D3_PDFDOCUMENTS_DATE", suffix: "COLON" }) }} {{ smarty.now|date_format(dateFormat) }}
</div>
{% endblock %}
</div>
{% endblock %}

Voir le fichier

@ -0,0 +1,25 @@
{% block recipientaddress %}
{% if order.getFieldData('oxdellname') %}
{% if order.getFieldData('oxdelcompany') %}
<div class="company">{{ order.getFieldData('oxdelcompany') }}</div>
{% endif %}
<div class="name">{{ order.getFieldData('oxdelfname') }} {{ order.getFieldData('oxdellname') }}</div>
{% if order.getFieldData('oxdeladdinfo') %}
<div class="addinfo">{{ order.getFieldData('oxdeladdinfo') }}</div>
{% endif %}
<div class="street">{{ order.getFieldData('oxdelstreet') }} {{ order.getFieldData('oxdelstreetnr') }}</div>
<div class="location">{{ order.getFieldData('oxdelzip') }} {{ order.getFieldData('oxdelcity') }}</div>
<div class="country">{{ order.getFieldData('oxdelcountry') }}</div>
{% else %}
{% if order.getFieldData('oxbillcompany') %}
<div class="company">{{ order.getFieldData('oxbillcompany') }}</div>
{% endif %}
<div class="name">{{ order.getFieldData('oxbillfname') }} {{ order.getFieldData('oxbilllname') }}</div>
{% if order.getFieldData('oxbilladdinfo') %}
<div class="addinfo">{{ order.getFieldData('oxbilladdinfo') }}</div>
{% endif %}
<div class="street">{{ order.getFieldData('oxbillstreet') }} {{ order.getFieldData('oxbillstreetnr') }}</div>
<div class="location">{{ order.getFieldData('oxbillzip') }} {{ order.getFieldData('oxbillcity') }}</div>
<div class="country">{{ order.getFieldData('oxbillcountry') }}</div>
{% endif %}
{% endblock %}

Voir le fichier

@ -0,0 +1,12 @@
{% block salutation %}
<div class="salutation">
<div class="documenttype">{{ translate({ ident: "D3_PDFDOCUMENTS_DELIVERYNOTE" }) }}</div>
<div class="documentnumber">{{ translate({ ident: "D3_PDFDOCUMENTS_ORDERNR", suffix: "COLON" }) }} {{ order.getFieldData('oxordernr') }}</div>
{% set dateFormat = 'D3_PDFDOCUMENTS_DATE_FORMAT'|translate %}
{% set sArgs = order.getFieldData('oxorderdate')|date_format(dateFormat)|cat("//")|cat(shop.getFieldData('oxname')) %}
{% set aArgs = sArgs|split("//") %}
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_ORDER_FROM_AT", args: aArgs }) }}</div>
</div>
{% endblock %}

Voir le fichier

@ -0,0 +1,13 @@
{% set backaddressfile = backaddressfile|default("@d3PdfDocuments/documents/inc/page/returnaddress.html.twig") %}
{% set addressfile = addressfile|default("@d3PdfDocuments/documents/inc/elements/recipientAddress.html.twig") %}
<div class="addressarea">
<div class="returnAddress">
<div>
{% include backaddressfile %}
</div>
</div>
<div class="recipientAddress">
{% include addressfile %}
</div>
</div>

Voir le fichier

@ -0,0 +1,254 @@
{% set sumnetto %}
{% block sumnetto %}
<tr class="sumnetto">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_SUMNETTO", suffix: "COLON" }) }}
</td>
<td class="values">
{{ order.getFormattedTotalNetSum() }} {{ currency.name }}
</td>
</tr>
{% endblock %}
{% endset %}
{% set discount %}
{% block discount %}
<tr class="discount">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_DISCOUNT", suffix: "COLON" }) }}
</td>
<td class="values">
{{ order.getFormattedDiscount() }} {{ currency.name }}
</td>
</tr>
{% endblock %}
{% endset %}
{% set producttax %}
{% block producttax %}
{% for VatKey, oVat in order.getProductVats(false) %}
<tr class="producttax">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_TAX", suffix: "COLON" }) | format( VatKey ) }}
</td>
<td class="values">
{{ lang.formatCurrency(oVat, currency) }} {{ currency.name }}
</td>
</tr>
{% endfor %}
{% endblock %}
{% endset %}
{% set sumbrutto %}
{% block sumbrutto %}
<tr class="sumbrutto">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_SUMBRUTTO", suffix: "COLON" }) }}
</td>
<td class="values">
{{ order.getFormattedTotalBrutSum() }} {{ currency.name }}
</td>
</tr>
{% endblock %}
{% endset %}
{% if order.getFieldData('oxdiscount') %}
{% if order.isNettoMode() %}
{{ sumnetto }}
{{ discount }}
{{ producttax }}
{{ sumbrutto }}
{% else %}
{{ sumbrutto }}
{{ discount }}
{{ sumnetto }}
{{ producttax }}
{% endif %}
{% else %}
{{ sumnetto }}
{{ producttax }}
{{ sumbrutto }}
{% endif %}
{% if order.getFieldData('oxvoucherdiscount') %}
{% block voucherdiscount %}
<tr class="voucherdiscount">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_VOUCHERDISCOUNT", suffix: "COLON" }) }}
</td>
<td class="values">
-{{ order.getFormattedTotalVouchers() }} {{ currency.name }}
</td>
</tr>
{% endblock %}
{% endif %}
{% block delivery %}
{% if config.getConfigParam('blShowVATForDelivery') %}
{% set deliveryPrice = order.getOrderDeliveryPrice() %}
<tr class="delivery">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_DELIVERY_NET", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(deliveryPrice.getNettoPrice(), currency) }} {{ currency.name }}
</td>
</tr>
<tr class="deliverytax">
<td class="indent"></td>
<td class="description">
{% if config.getConfigParam('sAdditionalServVATCalcMethod') != 'proportional' %}
{{ translate({ ident: "D3_PDFDOCUMENTS_TAX", suffix: "COLON" }) | format( order.getFieldData('oxdelvat') ) }}
{% else %}
{{ translate({ ident: "D3_PDFDOCUMENTS_PROPORTIONAL_TAX", suffix: "COLON" }) }}
{% endif %}
</td>
<td class="values">
{{ lang.formatCurrency(deliveryPrice.getVATValue(), currency) }} {{ currency.name }}
</td>
</tr>
{% else %}
<tr class="delivery">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_DELIVERY", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(order.getFieldData('oxdelcost'), currency) }} {{ currency.name }}
</td>
</tr>
{% endif %}
{% endblock %}
{% block payment %}
{% if config.getConfigParam('blShowVATForPayCharge') %}
{% set paymentPrice = order.getOrderPaymentPrice() %}
<tr class="payment">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_PAYMENT_NET", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(paymentPrice.getNettoPrice(), currency) }} {{ currency.name }}
</td>
</tr>
<tr class="paymenttax">
<td class="indent"></td>
<td class="description">
{% if config.getConfigParam('sAdditionalServVATCalcMethod') != 'proportional' %}
{{ translate({ ident: "D3_PDFDOCUMENTS_TAX", suffix: "COLON" }) | format( order.getFieldData('oxpayvat') ) }}
{% else %}
{{ translate({ ident: "D3_PDFDOCUMENTS_PROPORTIONAL_TAX", suffix: "COLON" }) }}
{% endif %}
</td>
<td class="values">
{{ lang.formatCurrency(paymentPrice.getVATValue(), currency) }} {{ currency.name }}
</td>
</tr>
{% else %}
<tr class="payment">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_PAYMENT", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(order.getFieldData('oxpaycost'), currency) }} {{ currency.name }}
</td>
</tr>
{% endif %}
{% endblock %}
{% block wrapping %}
{% if order.getFieldData('oxwrapcost') %}
{% if config.getConfigParam('blShowVATForWrapping') %}
{% set wrappingPrice = order.getOrderWrappingPrice() %}
<tr class="wrapping">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_WRAPPING_NET", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(wrappingPrice.getNettoPrice(), currency) }} {{ currency.name }}
</td>
</tr>
<tr class="wrappingtax">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_UNDEFINED_TAX", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(wrappingPrice.getVATValue(), currency) }} {{ currency.name }}
</td>
</tr>
{% else %}
<tr class="wrapping">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_WRAPPING", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(order.getFieldData('oxwrapcost'), currency) }} {{ currency.name }}
</td>
</tr>
{% endif %}
{% endif %}
{% endblock %}
{% block giftcard %}
{% if order.getFieldData('oxgiftcardcost') %}
{% if config.getConfigParam('blShowVATForWrapping') %}
{% set giftCardPrice = order.getOrderGiftCardPrice() %}
<tr class="giftcard">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_GIFTCARD_NET", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(giftCardPrice.getNettoPrice(), currency) }} {{ currency.name }}
</td>
</tr>
<tr class="wrappingtax">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_UNDEFINED_TAX", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(giftCardPrice.getVATValue(), currency) }} {{ currency.name }}
</td>
</tr>
{% else %}
<tr class="wrapping">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_GIFTCARD", suffix: "COLON" }) }}
</td>
<td class="values">
{{ lang.formatCurrency(order.getFieldData('oxgiftcardcost'), currency) }} {{ currency.name }}
</td>
</tr>
{% endif %}
{% endif %}
{% endblock %}
{% block totalsum %}
<tr class="totalseparator">
<td class="indent"></td>
<td class="description"></td>
<td class="values"></td>
</tr>
<tr class="totalsum">
<td class="indent"></td>
<td class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_TOTALSUMBRUT", suffix: "COLON" }) }}
</td>
<td class="values">
{{ order.getFormattedTotalOrderSum() }} {{ currency.name }}
</td>
</tr>
{% endblock %}

Voir le fichier

@ -0,0 +1,62 @@
{% set currency = order.getOrderCurrency() %}
{% set showPrices = showPrices|default(1) %}
{% block articlelist %}
<table class="article_table{% if showPrices %}_prices{% endif %}">
<tr>
<th class="amount">
{{ translate({ ident: "D3_PDFDOCUMENTS_AMOUNT" }) }}
</th>
<th class="description">
{{ translate({ ident: "D3_PDFDOCUMENTS_DESCRIPTION" }) }}
</th>
{% if showPrices %}
<th class="tax">
{{ translate({ ident: "D3_PDFDOCUMENTS_USTPERCENTAGE" }) }}
</th>
<th class="unitPrice">
{{ translate({ ident: "D3_PDFDOCUMENTS_UNITPRICE" }) }}
</th>
<th class="totalPrice">
{{ translate({ ident: "D3_PDFDOCUMENTS_TOTALPRICE" }) }}
</th>
{% endif %}
</tr>
{% for orderArticle in order.getOrderArticles(true) %}
<tr>
<td class="amount">
{{ orderArticle.getFieldData('oxamount') }}
</td>
<td class="description">
{{ orderArticle.getFieldData('oxtitle') }} {{ orderArticle.getFieldData('oxselvariant') }}
<br>
<span class="artnr">
{{ translate({ ident: "D3_PDFDOCUMENTS_ARTNR" }) }} {{ orderArticle.getFieldData('oxartnum') }}
</span>
</td>
{% if showPrices %}
<td class="tax">
{{ orderArticle.getFieldData('oxvat') }}
</td>
<td class="unitPrice">
{{ orderArticle.getBrutPriceFormated() }} {{ currency.name }}
</td>
<td class="totalPrice">
{{ orderArticle.getTotalBrutPriceFormated() }} {{ currency.name }}
</td>
{% endif %}
</tr>
{% endfor %}
</table>
{% endblock %}
{% if showPrices %}
{% block articleCosts %}
<nobreak>
<table class="article_costs_table">
{% block d3_article_costs_summary %}
{% include "@d3PdfDocuments/documents/inc/elements/articlecostssummary.html.twig" %}
{% endblock %}
</table>
</nobreak>
{% endblock %}
{% endif %}

Voir le fichier

@ -0,0 +1,19 @@
{% block deliveryaddress %}
{% if order.getFieldData('oxdelstreet') %}
<div class="deliveryaddress">
<div class="headline">
{{ translate({ ident: "D3_PDFDOCUMENTS_DELIVERYADDRESS", suffix: "COLON" }) }}
</div>
{% if order.getFieldData('oxdelcompany') %}
<div class="company">{{ order.getFieldData('oxdelcompany') }}</div>
{% endif %}
<div class="name">{{ order.getFieldData('oxdelfname') }} {{ order.getFieldData('oxdellname') }}</div>
{% if order.getFieldData('oxdeladdinfo') %}
<div class="addinfo">{{ order.getFieldData('oxdeladdinfo') }}</div>
{% endif %}
<div class="street">{{ order.getFieldData('oxdelstreet') }} {{ order.getFieldData('oxdelstreetnr') }}</div>
<div class="location">{{ order.getFieldData('oxdelzip') }} {{ order.getFieldData('oxdelcity') }}</div>
<div class="country">{{ order.getFieldData('oxdelcountry') }}</div>
</div>
{% endif %}
{% endblock %}

Voir le fichier

@ -0,0 +1,32 @@
{% set defaultPagePadding = "45,15,25,25"|split(",") %} {# top, right, bottom, left #}
{% set pagePadding = pagePadding|default(defaultPagePadding) %}
<style>
.marks {
position: absolute;
left: {{ 5 - pagePadding.3|number_format }}mm ;
margin-left: 0;
width: 7px;
height: 0;
border-top: 1px solid silver;
}
.foldtop {
top: {{ 105 - pagePadding.0|number_format }}mm
}
.foldbottom {
top: {{ 210 - pagePadding.0|number_format }}mm
}
.punch {
top: {{ 148.5 - pagePadding.0|number_format }}mm
}
</style>
{# fold marks #}
<div class="marks foldtop"></div>
<div class="marks foldbottom"></div>
{# punch mark #}
<div class="marks punch"></div>

Voir le fichier

@ -0,0 +1,39 @@
<div class="informations">
<div class="contactinformations">
{% block pdfContactInformations %}
<div class="headline">
{{ translate({ ident: "D3_PDFDOCUMENTS_GET_IN_CONTACT" }) }}
</div>
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_TELEFON", suffix: "COLON" }) }} {{ shop.getFieldData('oxtelefon') }}
</div>
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_FAX", suffix: "COLON" }) }} {{ shop.getFieldData('oxtelefax') }}
</div>
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_EMAIL", suffix: "COLON" }) }} {{ shop.getFieldData('oxinfoemail') }}
</div>
{% endblock %}
</div>
<div class="bankaccountinformations">
{% block pdfBankaccountInformations %}
<div class="headline">
{{ translate({ ident: "D3_PDFDOCUMENTS_BANK_ACCOUNT" }) }}
</div>
<div>
{{ shop.getFieldData('oxbankname') }}
</div>
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_BANK_ACCOUNTNR", suffix: "COLON" }) }} {{ shop.getFieldData('oxibannumber') }}
</div>
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_BANK_BANKCODE_HEADER", suffix: "COLON" }) }} {{ shop.getFieldData('oxbiccode') }}
</div>
{% endblock %}
</div>
{% if documentinformationfile %}
{% include documentinformationfile %}
{% endif %}
</div>

Voir le fichier

@ -0,0 +1,12 @@
{% block recipientaddress %}
{% if order.getFieldData('oxbillcompany') %}
<div class="company">{{ order.getFieldData('oxbillcompany') }}</div>
{% endif %}
<div class="name">{{ order.getFieldData('oxbillfname') }} {{ order.getFieldData('oxbilllname') }}</div>
{% if order.getFieldData('oxbilladdinfo') %}
<div class="addinfo">{{ order.getFieldData('oxbilladdinfo') }}</div>
{% endif %}
<div class="street">{{ order.getFieldData('oxbillstreet') }} {{ order.getFieldData('oxbillstreetnr') }}</div>
<div class="location">{{ order.getFieldData('oxbillzip') }} {{ order.getFieldData('oxbillcity') }}</div>
<div class="country">{{ order.getFieldData('oxbillcountry') }}</div>
{% endblock %}

Voir le fichier

@ -0,0 +1,38 @@
{% set defaultPagePadding = "45,15,25,25"|split(",") %} {# top, right, bottom, left #}
{% set pagePadding = pagePadding|default(defaultPagePadding) %}
<style>
.rulerItemHorizontal {
position: absolute;
top: -{{ pagePadding.0 }}mm;
width: 0;
height: 7px;
color: blue;
border-left: 1px solid blue
}
.rulerItemVertical {
position: absolute;
left: -{{ pagePadding.3 }}mm;
width: 7px;
height: 0;
color: blue;
border-top: 1px solid blue
}
</style>
{# horizontal #}
{% for rulerItemsHorizontal in 10..600 %}
<div class="rulerItemHorizontal" style="left: {{ smarty.section.rulerItemsHorizontal.index - pagePadding.3 }}mm">
{{ loop.index0 }}
</div>
{% endfor %}
{# vertical #}
{% for rulerItemsVertical in 0..600 %}
<div class="rulerItemVertical" style="top: {{ smarty.section.rulerItemsVertical.index - pagePadding.0 }}mm">
{{ loop.index0 }}
</div>
{% endfor %}

Voir le fichier

@ -0,0 +1,21 @@
{% set pageset = pageset|default("new") %}
{% set orientation = orientation|default("P") %}
{% set format = format|default("A4") %}
{% set defaultPagePadding = "45,15,25,25"|split(",") %} {# top, right, bottom, left #}
{% set pagePadding = pagePadding|default(defaultPagePadding) %}
<style>
{{ pdfBlock_style }}
</style>
<page backtop="{{ pagePadding.0 }}mm" backright="{{ pagePadding.1 }}mm" backbottom="{{ pagePadding.2 }}mm" backleft="{{ pagePadding.3 }}mm" pageset="{{ pageset }}" orientation="{{ orientation }}" format="{{ format }}">
<page_header>
{{ pdfBlock_header }}
</page_header>
<page_footer>
{{ pdfBlock_footer }}
</page_footer>
{{ pdfBlock_content }}
</page>

Voir le fichier

@ -0,0 +1,38 @@
{% set defaultPagePadding = "45,15,25,25"|split(",") %} {# top, right, bottom, left #}
{% set pagePadding = pagePadding|default(defaultPagePadding) %}
{% block pdfFooter %}
<div class="footer" style="margin: 0 {{ pagePadding.1 }}mm 10mm {{ pagePadding.3 }}mm">
<table>
<tr>
{% block pdfFooterLeft %}
<td class="footerLeft">
<div>{{ shop.getFieldData('oxname') }}</div>
<div>{{ shop.getFieldData('oxstreet') }}</div>
<div>{{ shop.getFieldData('oxzip') }} {{ shop.getFieldData('oxcity') }}</div>
<div>{{ shop.getFieldData('oxcountry') }}</div>
<div>{{ shop.getFieldData('oxurl') }}</div>
<div>{{ shop.getFieldData('oxinfoemail') }}</div>
</td>
{% endblock %}
{% block pdfFooterCenter %}
<td class="footerCenter">
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_MANAGINGDIRECTOR", suffix: "COLON" }) }} {{ shop.getFieldData('oxfname') }} {{ shop.getFieldData('oxlname') }}</div>
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_COURT", suffix: "COLON" }) }} {{ shop.getFieldData('oxcourt') }}</div>
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_HRBNR", suffix: "COLON" }) }} {{ shop.getFieldData('oxhrbnr') }}</div>
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_USTID", suffix: "COLON" }) }} {{ shop.getFieldData('oxvatnumber') }}</div>
</td>
{% endblock %}
{% block pdfFooterRight %}
<td class="footerRight">
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_BANK_ACCOUNT" }) }}</div>
<div>{{ shop.getFieldData('oxbankname') }}</div>
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_BANK_ACCOUNTNR", suffix: "COLON" }) }} {{ shop.getFieldData('oxibannumber') }}</div>
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_BANK_BANKCODE", suffix: "COLON" }) }} {{ shop.getFieldData('oxbiccode') }}</div>
</td>
{% endblock %}
</tr>
</table>
</div>
{% endblock %}

Voir le fichier

@ -0,0 +1,11 @@
{% set showLogo = showLogo|default(1) %}
{% block pdfHeader %}
<div class="header">
{% if showLogo %}
{% block pdfHeaderLogo %}
<img class="logo" alt="Logo" src="{{ oViewConf.getModulePath('d3PdfDocuments', 'out/img/clogo.jpg') }}">
{% endblock %}
{% endif %}
</div>
{% endblock %}

Voir le fichier

@ -0,0 +1 @@
{{ shop.getFielddata('oxname') }} - {{ shop.getFielddata('oxstreet') }} - {{ shop.getFielddata('oxzip') }} {{ shop.getFielddata('oxcity') }} - {{ shop.getFieldData('oxcountry') }}

Voir le fichier

@ -0,0 +1,19 @@
{% block conclusion %}
<nobreak>
{% block conclusion_paymethod %}
<div class="conclusion_payment">
{{ translate({ ident: "D3_PDFDOCUMENTS_USED_PAYMENTMETHOD", suffix: "COLON" }) }}
{{ payment.getFieldData('oxdesc') }}<br>
{% include "@d3PdfDocuments/documents/invoice/inc/payinfo.html.twig" %}
</div>
{% endblock %}
{% block conclusion_thankyou %}
<div class="conclusion_thankyou">
{{ translate({ ident: "D3_PDFDOCUMENTS_THANKYOU_1" }) }}<br>
{{ translate({ ident: "D3_PDFDOCUMENTS_THANKYOU_2", args: shop.getFieldData('oxname') }) }}
</div>
{% endblock %}
</nobreak>
{% endblock %}

Voir le fichier

@ -0,0 +1,19 @@
{% block informations %}
<div class="documentinformations">
{% block pdfDocumentInformations %}
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_ORDERBILLNR", suffix: "COLON" }) }} {{ order.getFieldData('oxbillnr') }}
</div>
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_CUSTOMERNR", suffix: "COLON" }) }} {{ user.getFieldData('oxcustnr') }}
</div>
<div>
{% set dateFormat = 'D3_PDFDOCUMENTS_DATE_FORMAT'|translate %}
{{ translate({ ident: "D3_PDFDOCUMENTS_DATE", suffix: "COLON" }) }} {{ order.getFieldData('oxbilldate')|date_format(dateFormat) }}
</div>
<div>
{{ translate({ ident: "D3_PDFDOCUMENTS_USTIDNR", suffix: "COLON" }) }} {{ shop.getFieldData('oxvatnumber') }}
</div>
{% endblock %}
</div>
{% endblock %}

Voir le fichier

@ -0,0 +1,16 @@
{% block payinfo %}
{% if payment.getId() == 'oxidinvoice' %}
{% block payinfo_billable_till %}
{% set dateFormat = 'D3_PDFDOCUMENTS_DATE_FORMAT'|translate %}
{{ translate({ ident: "D3_PDFDOCUMENTS_PAYABLEUNTIL" }) }}
{{ document.getPayableUntilDate()|date_format(dateFormat) }}
{% endblock %}
{% elseif payment.getId() == 'oxidpayadvance' or payment.getId() == 'oxidcreditcard' %}
{% block payinfo_payed %}
{{ translate({ ident: "D3_PDFDOCUMENTS_RECEIVED_PAYMENT" }) }}
{% endblock %}
{% else %}
{% block payinfo_other %}
{% endblock %}
{% endif %}
{% endblock %}

Voir le fichier

@ -0,0 +1,12 @@
{% block salutation %}
<div class="salutation">
<div class="documenttype">{{ translate({ ident: "D3_PDFDOCUMENTS_INVOICE" }) }}</div>
<div class="documentnumber">{{ translate({ ident: "D3_PDFDOCUMENTS_ORDERNR", suffix: "COLON" }) }} {{ order.getFieldData('oxordernr') }}</div>
{% set dateFormat = 'D3_PDFDOCUMENTS_DATE_FORMAT'|translate %}
{% set sArgs = order.getFieldData('oxorderdate')|date_format(dateFormat)|cat("//")|cat(shop.getFieldData('oxname')) %}
{% set aArgs = sArgs|split("//") %}
<div>{{ translate({ ident: "D3_PDFDOCUMENTS_ORDER_FROM_AT", args: aArgs }) }}</div>
</div>
{% endblock %}

Voir le fichier

@ -0,0 +1,50 @@
{% set pagePadding = "45,15,25,25"|split(",") %} {# top, right, bottom, left #}
{% set showLogo = showLogo|default(1) %}
{% set pdfBlock_style %}
{% block pdfStyles %}
{% include "@d3PdfDocuments/assets/pdfStyling.css.twig" %}
{% endblock %}
{% endset %}
{% set pdfBlock_header %}
{% block pdfHeader %}
{% include "@d3PdfDocuments/documents/inc/page/header.html.twig" with {showLogo: showLogo} %}
{% endblock %}
{% endset %}
{% set pdfBlock_content %}
{% include "@d3PdfDocuments/documents/inc/elements/foldmarks.html.twig" with {pagePadding: pagePadding} %}
{% block pdfAddressArea %}
{% include "@d3PdfDocuments/documents/inc/elements/addressarea.html.twig" %}
{% endblock %}
{% block pdfInformations %}
{% include "@d3PdfDocuments/documents/inc/elements/informations.html.twig" with {documentinformationfile: "@d3PdfDocuments/documents/invoice/inc/informations.html.twig"} %}
{% endblock %}
{% block pdfDeliveryAddress %}
{% include "@d3PdfDocuments/documents/inc/elements/deliveryaddress.html.twig" %}
{% endblock %}
{% block pdfSalutation %}
{% include "@d3PdfDocuments/documents/invoice/inc/salutation.html.twig" %}
{% endblock %}
{% block pdfArticleList %}
{% include "@d3PdfDocuments/documents/inc/elements/articlelist.html.twig" %}
{% endblock %}
{% block pdfConclusion %}
{% include "@d3PdfDocuments/documents/invoice/inc/conclusion.html.twig" %}
{% endblock %}
{% endset %}
{% set pdfBlock_footer %}
{% block pdfFooter %}
{% include "@d3PdfDocuments/documents/inc/page/footer.html.twig" with {pagePadding: pagePadding} %}
{% endblock %}
{% endset %}
{% include "@d3PdfDocuments/documents/inc/page/base.html.twig" with {pagePadding: pagePadding} %}

Voir le fichier

@ -0,0 +1 @@
{% include "@d3PdfDocuments/documents/invoice/invoice.html.twig" with {showLogo: 0} %}

Voir le fichier

@ -0,0 +1,7 @@
{% extends "order_overview.html.twig" %}
{% block admin_order_overview_export %}
{{ parent() }}
{% include "@d3PdfDocuments/admin/orderoverview_pdfform" %}
{% endblock %}