template mso compatibility
gitea/salix/1466-print_refactor There was a failure building this commit Details

This commit is contained in:
Joan Sanchez 2019-11-11 11:04:49 +01:00
parent 1a15ed7d50
commit 0838540789
57 changed files with 2176 additions and 1318 deletions

View File

@ -1,10 +1,14 @@
div.vn-dialog {
& > div {
padding: 0 !important
& > div.window {
padding: 0
}
& > div.window > form {
padding: 0
}
tpl-body {
min-width: 800px;
width: 800px;
.container, .container h1 {
font-family: "Roboto","Helvetica","Arial",sans-serif;

View File

@ -3,42 +3,28 @@
*
*/
body {
background-color: #EEE;
color: #555;
margin: 0
}
.grid {
background-color: #EEE
}
.container {
max-width: 600px;
min-width: 320px;
margin: 0 auto;
color: #555
}
.main {
background-color: #FFF;
padding: 20px
}
.main a {
.grid a {
color: #8dba25
}
.main h1 {
color: #999
.grid-block {
min-width: 320px;
max-width: 600px;
margin: 0 auto;
width: 600px
}
.main h3 {
font-size: 16px
}
.title {
background-color: #95d831;
text-transform: uppercase;
text-align: center;
padding: 35px 0
}
.title h1 {
font-size: 32px;
h1 {
font-weight: 100;
font-size: 1.5em;
color: #333;
margin: 0
}

View File

@ -2,13 +2,33 @@
* CSS layout elements
*
*/
.container {
.grid {
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-size: 16px
font-size: 16px;
width: 100%
}
.grid-row {
background-color: transparent
}
.grid-block {
box-sizing: border-box;
min-height: 40px
}
.grid-block.empty {
height: 40px
}
.grid-block.white {
background-color: #FFF
}
.columns {
overflow: hidden
overflow: hidden;
box-sizing: border-box;
}
.columns .size100 {
@ -22,6 +42,7 @@
}
.columns .size50 {
box-sizing: border-box;
width: 50%;
float: left
}
@ -177,7 +198,7 @@ table {
}
.panel .row-oriented td, .panel .row-oriented th {
padding: 10px 0
padding: 8px 10px
}
.row-oriented > tbody > tr > td {
@ -203,8 +224,8 @@ table {
margin-left: -1px;
margin-right: 1px;
margin-top: 10px;
padding: 5px 0;
color: #999;
padding: 5px 0
}
.line .vertical-aligned {

View File

@ -3,7 +3,7 @@
*
*/
body {
zoom: 0.55
zoom: 0.53
}
.title {

View File

@ -0,0 +1,349 @@
/**
* CSS spacing classes
*
* vn-[p|m][t|r|b|l|a|x|y]-[none|auto|xs|sm|md|lg|xl]
* T D S
*
* T - type
* - values: p (padding), m (margin)
*
* D - direction
* - values:
* t (top), r (right), b (bottom), l (left),
* a (all), x (both left & right), y (both top & bottom)
*
* S - size
* - values:
* none,
* auto (ONLY for specific margins: vn-ml-*, vn-mr-*, vn-mx-*),
* xs (extra small),
* sm (small),
* md (medium),
* lg (large),
* xl (extra large)
*/
/* ++++++++++++++++++++++++++++++++++++++++++++++++ Padding */
.vn-pa-none {
padding: 0;
}
.vn-pl-none {
padding-left: 0;
}
.vn-pr-none {
padding-right: 0;
}
.vn-pt-none {
padding-top: 0;
}
.vn-pb-none {
padding-bottom: 0;
}
.vn-py-none {
padding-top: 0;
padding-bottom: 0;
}
.vn-px-none {
padding-left: 0;
padding-right: 0;
}
.vn-pa-xs {
padding: 4px;
}
.vn-pl-xs {
padding-left: 4px;
}
.vn-pr-xs {
padding-right: 4px;
}
.vn-pt-xs {
padding-top: 4px;
}
.vn-pb-xs {
padding-bottom: 4px;
}
.vn-py-xs {
padding-top: 4px;
padding-bottom: 4px;
}
.vn-px-xs {
padding-left: 4px;
padding-right: 4px;
}
/* Small */
.vn-pa-sm {
padding: 8px;
}
.vn-pl-sm {
padding-left: 8px;
}
.vn-pr-sm {
padding-right: 8px;
}
.vn-pt-sm {
padding-top: 8px;
}
.vn-pb-sm {
padding-bottom: 8px;
}
.vn-py-sm {
padding-top: 8px;
padding-bottom: 8px;
}
.vn-px-sm {
padding-left: 8px;
padding-right: 8px;
}
/* Medium */
.vn-pa-md {
padding: 16px;
}
.vn-pl-md {
padding-left: 16px;
}
.vn-pr-md {
padding-right: 16px;
}
.vn-pt-md {
padding-top: 16px;
}
.vn-pb-md {
padding-bottom: 16px;
}
.vn-py-md {
padding-top: 16px;
padding-bottom: 16px;
}
.vn-px-md {
padding-left: 16px;
padding-right: 16px;
}
/* Large */
.vn-pa-lg {
padding: 32px;
}
.vn-pl-lg {
padding-left: 32px;
}
.vn-pr-lg {
padding-right: 32px;
}
.vn-pt-lg {
padding-top: 32px;
}
.vn-pb-lg {
padding-bottom: 32px;
}
.vn-py-lg {
padding-top: 32px;
padding-bottom: 32px;
}
.vn-px-lg {
padding-left: 32px;
padding-right: 32px;
}
/* Extra large */
.vn-pa-xl {
padding: 100px;
}
.vn-pl-xl {
padding-left: 100px;
}
.vn-pr-xl {
padding-right: 100px;
}
.vn-pt-xl {
padding-top: 100px;
}
.vn-pb-xl {
padding-bottom: 100px;
}
.vn-py-xl {
padding-top: 100px;
padding-bottom: 100px;
}
.vn-px-xl {
padding-left: 100px;
padding-right: 100px;
}
/* ++++++++++++++++++++++++++++++++++++++++++++++++ Margin */
/* None */
.vn-ma-none {
padding: 0;
}
.vn-ml-none {
padding-left: 0;
}
.vn-mr-none {
padding-right: 0;
}
.vn-mt-none {
padding-top: 0;
}
.vn-mb-none {
padding-bottom: 0;
}
.vn-my-none {
padding-top: 0;
padding-bottom: 0;
}
.vn-mx-none {
padding-left: 0;
padding-right: 0;
}
/* Auto */
.vn-ml-none {
padding-left: auto;
}
.vn-mr-none {
padding-right: auto;
}
.vn-mx-none {
padding-left: auto;
padding-right: auto;
}
/* Extra small */
.vn-ma-xs {
margin: 4px;
}
.vn-mt-xs {
margin-top: 4px;
}
.vn-ml-xs {
margin-left: 4px;
}
.vn-mr-xs {
margin-right: 4px;
}
.vn-mb-xs {
margin-bottom: 4px;
}
.vn-my-xs {
margin-top: 4px;
margin-bottom: 4px;
}
.vn-mx-xs {
margin-left: 4px;
margin-right: 4px;
}
/* Small */
.vn-ma-sm {
margin: 8px;
}
.vn-mt-sm {
margin-top: 8px;
}
.vn-ml-sm {
margin-left: 8px;
}
.vn-mr-sm {
margin-right: 8px;
}
.vn-mb-sm {
margin-bottom: 8px;
}
.vn-my-sm {
margin-top: 8px;
margin-bottom: 8px;
}
.vn-mx-sm {
margin-left: 8px;
margin-right: 8px;
}
/* Medium */
.vn-ma-md {
margin: 16px;
}
.vn-mt-md {
margin-top: 16px;
}
.vn-ml-md {
margin-left: 16px;
}
.vn-mr-md {
margin-right: 16px;
}
.vn-mb-md {
margin-bottom: 16px;
}
.vn-my-md {
margin-top: 16px;
margin-bottom: 16px;
}
.vn-mx-md {
margin-left: 16px;
margin-right: 16px;
}
/* Large */
.vn-ma-lg {
margin: 32px;
}
.vn-mt-lg {
margin-top: 32px;
}
.vn-ml-lg {
margin-left: 32px;
}
.vn-mr-lg {
margin-right: 32px;
}
.vn-mb-lg {
margin-bottom: 32px;
}
.vn-my-lg {
margin-top: 32px;
margin-bottom: 32px;
}
.vn-mx-lg {
margin-left: 32px;
margin-right: 32px;
}
/* Extra large */
.vn-ma-xl {
margin: 100px;
}
.vn-mt-xl {
margin-top: 100px;
}
.vn-ml-xl {
margin-left: 100px;
}
.vn-mr-xl {
margin-right: 100px;
}
.vn-mb-xl {
margin-bottom: 100px;
}
.vn-my-xl {
margin-top: 100px;
margin-bottom: 100px;
}
.vn-mx-xl {
margin-left: 100px;
margin-right: 100px;
}

View File

@ -1,7 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -0,0 +1,22 @@
div {
display: inline-block;
box-sizing: border-box
}
a {
background-color: #F5F5F5;
border: 1px solid #CCC;
display: flex;
vertical-align: middle;
box-sizing: border-box;
min-width: 150px;
text-decoration: none;
border-radius: 3px;
color: #8dba25
}
a > div.icon {
font-weight: bold;
font-size: 18px;
color: #555
}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5C8.12 15 7 13.88 7 12.5S8.12 10 9.5 10H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z"/><path fill="none" d="M0 0h24v24H0V0z"/></svg>

After

Width:  |  Height:  |  Size: 371 B

View File

@ -1,3 +1,6 @@
<section v-if="attachment.component">
<a v-bind:href="path" target="_blank">{{attachment.filename}}</a>
</section>
<div class="vn-mx-xs" v-if="attachment.component">
<a target="_blank" class="vn-py-sm vn-px-md" v-bind:href="path">
<div class="text">{{attachment.filename}}</div>
<div class="icon vn-pl-md">&#x25BC;</div>
</a>
</div>

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -3,12 +3,9 @@
}
.buttons a {
display: inline-block;
box-sizing: border-box;
text-decoration: none;
font-size: 16px;
width: 100%;
color: #fff;
width: 50%
}
.buttons .btn {
@ -16,18 +13,20 @@
text-align: center
}
.buttons .btn .text {
display: inline-block;
padding: 22px 0
}
.buttons .btn .icon {
background-color: #95d831;
box-sizing: border-box;
font-weight: bold;
text-align: center;
padding: 16.5px 0;
float: right;
width: 70px
color: #333;
float: left
}
.buttons .btn .text {
display: inline-block;
}
.networks {

View File

@ -3,23 +3,28 @@
"filename": "facebook.png",
"path": "/assets/images/facebook.png",
"cid": "facebook.png"
}, {
},
{
"filename": "twitter.png",
"path": "/assets/images/twitter.png",
"cid": "twitter.png"
}, {
},
{
"filename": "youtube.png",
"path": "/assets/images/youtube.png",
"cid": "youtube.png"
}, {
},
{
"filename": "pinterest.png",
"path": "/assets/images/pinterest.png",
"cid": "pinterest.png"
}, {
},
{
"filename": "instagram.png",
"path": "/assets/images/instagram.png",
"cid": "instagram.png"
}, {
},
{
"filename": "linkedin.png",
"path": "/assets/images/linkedin.png",
"cid": "linkedin.png"

View File

@ -1,23 +1,28 @@
<footer>
<!-- Action button block -->
<section class="buttons">
<a href="https://www.verdnatura.es" target="_blank">
<div class="btn">
<span class="text">{{ $t('buttons.webAcccess')}}</span>
<span class="icon"><img v-bind:src="getEmailSrc('action.png')"/></span>
<div class="buttons">
<div class="columns">
<div class="size50">
<a href="https://www.verdnatura.es" target="_blank">
<div class="btn">
<!-- <span class="icon vn-pa-sm"><img v-bind:src="getEmailSrc('action.png')"/></span> -->
<span class="text vn-pa-sm">{{ $t('buttons.webAcccess')}}</span>
</div>
</a>
</div>
</a>
<a href="https://goo.gl/forms/j8WSL151ZW6QtlT72" target="_blank">
<div class="btn">
<span class="text">{{ $t('buttons.info')}}</span>
<span class="icon"><img v-bind:src="getEmailSrc('info.png')"/></span>
<div class="size50">
<a href="https://goo.gl/forms/j8WSL151ZW6QtlT72" target="_blank">
<div class="btn">
<!-- <span class="icon vn-pa-sm"><img v-bind:src="getEmailSrc('info.png')"/></span> -->
<span class="text vn-pa-sm">{{ $t('buttons.info')}}</span>
</div>
</a>
</div>
</a>
</section>
<!-- Action button block -->
</div>
</div>
<!-- Networks block -->
<section class="networks">
<div class="networks">
<a href="https://www.facebook.com/Verdnatura" target="_blank">
<img v-bind:src="getEmailSrc('facebook.png')" alt="Facebook"/>
</a>
@ -36,14 +41,13 @@
<a href="https://www.linkedin.com/company/verdnatura" target="_blank">
<img v-bind:src="getEmailSrc('linkedin.png')" alt="Linkedin"/>
</a>
</section>
<!-- Networks block end -->
</div>
<!-- Privacy block -->
<section class="privacy">
<div class="privacy">
<p>{{$t('privacy.fiscalAddress')}}</p>
<p>{{$t('privacy.disclaimer')}}</p>
<p>{{$t('privacy.law')}}</p>
</section>
</div>
<!-- Privacy block end -->
</footer>

View File

@ -1,6 +1,6 @@
buttons:
webAcccess: Visitez notre site web
info: Ayúdanos a mejorar
info: Aidez-nous à améliorer
privacy:
fiscalAddress: VERDNATURA LEVANTE SL, B97367486 Avda. Espioca, 100, 46460 Silla
· www.verdnatura.es · clientes@verdnatura.es

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -1,7 +1,19 @@
header {
color: #555
header .logo {
margin-bottom: 15px;
}
header img {
width: 100%
header .logo img {
width: 50%
}
header .topbar {
background-color: #95d831;
height: 25px
}
.topbar:after {
overflow: hidden;
display: block;
content: ' ';
clear: both;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" width="226.229px" height="31.038px" viewBox="0 0 226.229 31.038" enable-background="new 0 0 226.229 31.038" xml:space="preserve" id="svg2" inkscape:version="0.48.1 r9760" sodipodi:docname="logo.svg"><metadata id="metadata61"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><defs id="defs59"/><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1366" inkscape:window-height="710" id="namedview57" showgrid="false" inkscape:zoom="4.0755163" inkscape:cx="138.56745" inkscape:cy="16.509992" inkscape:window-x="0" inkscape:window-y="26" inkscape:window-maximized="1" inkscape:current-layer="svg2"/>
<g id="Background">
</g>
<g id="Guides">
</g>
<g id="Foreground">
<g id="g7">
<g id="g9">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.417,30.321L0,0h8.233l4.26,15.582l0.349,1.276 c0.521,1.866,0.918,3.431,1.191,4.693c0.15-0.618,0.335-1.345,0.555-2.182c0.219-0.837,0.528-1.935,0.925-3.293L19.981,0h8.19 L17.671,30.321H10.417z" id="path11"/>
</g>
<g id="g13">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" d="M139.809,19.787c-0.665,0.357-1.748,0.686-3.25,0.988 c-0.727,0.137-1.283,0.254-1.667,0.35c-0.95,0.247-1.661,0.563-2.134,0.947c-0.472,0.384-0.799,0.899-0.979,1.544 c-0.223,0.796-0.155,1.438,0.204,1.925c0.359,0.488,0.945,0.731,1.757,0.731c1.252,0,2.375-0.36,3.369-1.081 c0.994-0.721,1.653-1.665,1.98-2.831L139.809,19.787z M144.915,30.321h-7.458c0.017-0.356,0.048-0.726,0.094-1.11l0.159-1.192 c-1.318,1.026-2.627,1.786-3.927,2.279c-1.299,0.493-2.643,0.739-4.031,0.739c-2.158,0-3.7-0.593-4.625-1.779 c-0.925-1.187-1.106-2.788-0.542-4.804c0.519-1.851,1.431-3.356,2.737-4.515c1.307-1.159,3.021-1.972,5.142-2.438 c1.169-0.247,2.641-0.515,4.413-0.803c2.646-0.412,4.082-1.016,4.304-1.812l0.151-0.539c0.182-0.65,0.076-1.145-0.317-1.483 c-0.393-0.339-1.071-0.508-2.033-0.508c-1.045,0-1.934,0.214-2.666,0.643c-0.731,0.428-1.289,1.058-1.673,1.887h-6.748 c1.065-2.53,2.64-4.413,4.723-5.65s4.724-1.856,7.923-1.856c1.991,0,3.602,0.241,4.833,0.722s2.095,1.209,2.59,2.185 c0.339,0.701,0.483,1.536,0.432,2.504c-0.052,0.969-0.377,2.525-0.978,4.669l-2.375,8.483c-0.284,1.014-0.416,1.812-0.396,2.395 s0.188,0.962,0.503,1.141L144.915,30.321z" id="path15" style="fill:#8ed300;fill-opacity:1"/>
</g>
<g id="g17">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" d="M185.7,30.321l6.27-22.393h7.049l-1.097,3.918 c1.213-1.537,2.502-2.659,3.867-3.366c1.365-0.707,2.951-1.074,4.758-1.101l-2.03,7.25c-0.304-0.042-0.608-0.072-0.912-0.093 c-0.303-0.02-0.592-0.03-0.867-0.03c-1.126,0-2.104,0.168-2.932,0.504c-0.829,0.336-1.561,0.854-2.197,1.555 c-0.406,0.467-0.789,1.136-1.149,2.007c-0.361,0.872-0.814,2.282-1.359,4.232l-2.104,7.516H185.7z" id="path19" style="fill:#8ed300;fill-opacity:1"/>
</g>
<g id="g21">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" d="M217.631,19.787c-0.664,0.357-1.748,0.686-3.25,0.988 c-0.727,0.137-1.282,0.254-1.667,0.35c-0.95,0.247-1.661,0.563-2.134,0.947c-0.472,0.384-0.799,0.899-0.979,1.544 c-0.223,0.796-0.155,1.438,0.205,1.925c0.359,0.488,0.945,0.731,1.757,0.731c1.252,0,2.375-0.36,3.369-1.081 c0.994-0.721,1.654-1.665,1.98-2.831L217.631,19.787z M222.737,30.321h-7.458c0.017-0.356,0.048-0.726,0.094-1.11l0.159-1.192 c-1.318,1.026-2.627,1.786-3.927,2.279c-1.299,0.493-2.643,0.739-4.031,0.739c-2.158,0-3.7-0.593-4.625-1.779 c-0.926-1.187-1.106-2.788-0.542-4.804c0.519-1.851,1.431-3.356,2.737-4.515c1.306-1.159,3.02-1.972,5.142-2.438 c1.169-0.247,2.641-0.515,4.413-0.803c2.647-0.412,4.082-1.016,4.304-1.812l0.151-0.539c0.182-0.65,0.077-1.145-0.317-1.483 c-0.393-0.339-1.071-0.508-2.033-0.508c-1.045,0-1.934,0.214-2.666,0.643c-0.731,0.428-1.289,1.058-1.672,1.887h-6.748 c1.065-2.53,2.64-4.413,4.723-5.65s4.724-1.856,7.923-1.856c1.99,0,3.601,0.241,4.833,0.722s2.095,1.209,2.591,2.185 c0.339,0.701,0.483,1.536,0.431,2.504c-0.051,0.969-0.377,2.525-0.978,4.669l-2.375,8.483c-0.284,1.014-0.416,1.812-0.396,2.395 c0.02,0.583,0.188,0.962,0.503,1.141L222.737,30.321z" id="path23" style="fill:#8ed300;fill-opacity:1"/>
</g>
<g id="g25">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" d="M188.386,7.928l-6.269,22.393h-7.174l0.864-3.085 c-1.227,1.246-2.476,2.163-3.746,2.751s-2.625,0.882-4.067,0.882c-2.471,0-4.154-0.634-5.048-1.901 c-0.895-1.268-0.993-3.149-0.294-5.644l4.31-15.396h7.338l-3.508,12.53c-0.516,1.842-0.641,3.109-0.375,3.803 s0.967,1.041,2.105,1.041c1.275,0,2.323-0.422,3.142-1.267c0.819-0.845,1.497-2.223,2.031-4.133l3.353-11.974H188.386z" id="path27" style="fill:#8ed300;fill-opacity:1"/>
</g>
<g id="g29">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" d="M149.937,12.356l1.239-4.428h2.995l1.771-6.326h7.338 l-1.771,6.326h3.753l-1.24,4.428h-3.753l-2.716,9.702c-0.416,1.483-0.498,2.465-0.247,2.946c0.25,0.48,0.905,0.721,1.964,0.721 l0.549-0.011l0.39-0.031l-1.31,4.678c-0.811,0.148-1.596,0.263-2.354,0.344c-0.758,0.081-1.48,0.122-2.167,0.122 c-2.543,0-4.108-0.621-4.695-1.863c-0.587-1.242-0.313-3.887,0.82-7.936l2.428-8.672H149.937z" id="path31" style="fill:#8ed300;fill-opacity:1"/>
</g>
<g id="g33">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M73.875,18.896c-0.561,2.004-0.616,3.537-0.167,4.601 s1.375,1.595,2.774,1.595c1.399,0,2.605-0.524,3.62-1.574s1.806-2.59,2.375-4.622c0.526-1.879,0.556-3.334,0.09-4.363 c-0.466-1.029-1.393-1.543-2.778-1.543c-1.304,0-2.487,0.528-3.551,1.585S74.386,17.071,73.875,18.896z M96.513,0l-8.489,30.321 h-7.337l0.824-2.944c-1.166,1.22-2.369,2.121-3.61,2.703s-2.583,0.874-4.025,0.874c-2.802,0-4.772-1.081-5.912-3.243 c-1.139-2.162-1.218-4.993-0.238-8.493c0.988-3.528,2.668-6.404,5.042-8.627c2.374-2.224,4.927-3.336,7.661-3.336 c1.47,0,2.695,0.296,3.676,0.887c0.981,0.591,1.681,1.465,2.099,2.62L89.217,0H96.513z" id="path35"/>
<g id="g37">
<path fill-rule="evenodd" clip-rule="evenodd" d="M73.875,18.896c-0.561,2.004-0.616,3.537-0.167,4.601s1.375,1.595,2.774,1.595 c1.399,0,2.605-0.524,3.62-1.574s1.806-2.59,2.375-4.622c0.526-1.879,0.556-3.334,0.09-4.363 c-0.466-1.029-1.393-1.543-2.778-1.543c-1.304,0-2.487,0.528-3.551,1.585S74.386,17.071,73.875,18.896z M96.513,0l-8.489,30.321 h-7.337l0.824-2.944c-1.166,1.22-2.369,2.121-3.61,2.703s-2.583,0.874-4.025,0.874c-2.802,0-4.772-1.081-5.912-3.243 c-1.139-2.162-1.218-4.993-0.238-8.493c0.988-3.528,2.668-6.404,5.042-8.627c2.374-2.224,4.927-3.336,7.661-3.336 c1.47,0,2.695,0.296,3.676,0.887c0.981,0.591,1.681,1.465,2.099,2.62L89.217,0H96.513z" id="path39"/>
</g>
</g>
<g id="g41">
<path fill-rule="evenodd" clip-rule="evenodd" d="M46.488,30.321l6.269-22.393h7.049l-1.098,3.918 c1.213-1.537,2.502-2.659,3.868-3.366s6.015-1.074,7.822-1.101l-2.03,7.25c-0.304-0.042-0.608-0.072-0.911-0.093 c-0.304-0.02-0.592-0.03-0.867-0.03c-1.126,0-5.167,0.168-5.997,0.504c-0.829,0.336-1.561,0.854-2.196,1.555 c-0.406,0.467-0.789,1.136-1.149,2.007c-0.361,0.872-0.814,2.282-1.36,4.232l-2.104,7.516H46.488z" id="path43"/>
</g>
<g id="g45">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M32.673,16.742l8.351-0.021 c0.375-1.436,0.308-2.558-0.201-3.365s-1.402-1.211-2.68-1.211c-1.209,0-2.285,0.397-3.229,1.19S33.224,15.265,32.673,16.742z M38.817,23.278h7.043c-1.347,2.456-3.172,4.356-5.477,5.7c-2.305,1.345-4.885,2.017-7.74,2.017 c-3.473,0-5.923-1.054-7.351-3.161c-1.427-2.107-1.632-4.98-0.613-8.618c1.038-3.707,2.875-6.641,5.512-8.803 c2.637-2.163,5.678-3.244,9.123-3.244c3.555,0,6.04,1.099,7.456,3.298c1.417,2.198,1.582,5.234,0.498,9.109l-0.239,0.814 l-0.167,0.484H31.721c-0.441,1.575-0.438,2.777,0.01,3.606c0.448,0.829,1.332,1.244,2.65,1.244c0.975,0,1.836-0.206,2.583-0.617 S38.33,24.086,38.817,23.278z" id="path47"/>
<g id="g49">
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.673,16.742l8.351-0.021c0.375-1.436,0.308-2.558-0.201-3.365 s-1.402-1.211-2.68-1.211c-1.209,0-2.285,0.397-3.229,1.19S33.224,15.265,32.673,16.742z M38.817,23.278h7.043 c-1.347,2.456-3.172,4.356-5.477,5.7c-2.305,1.345-4.885,2.017-7.74,2.017c-3.473,0-5.923-1.054-7.351-3.161 c-1.427-2.107-1.632-4.98-0.613-8.618c1.038-3.707,2.875-6.641,5.512-8.803c2.637-2.163,5.678-3.244,9.123-3.244 c3.555,0,6.04,1.099,7.456,3.298c1.417,2.198,1.582,5.234,0.498,9.109l-0.239,0.814l-0.167,0.484H31.721 c-0.441,1.575-0.438,2.777,0.01,3.606c0.448,0.829,1.332,1.244,2.65,1.244c0.975,0,1.836-0.206,2.583-0.617 S38.33,24.086,38.817,23.278z" id="path51"/>
</g>
</g>
<g id="g53">
<path fill="#A0CE67" d="M112.881,30.643l-6.404-18.639l-6.455,18.639h-7.254l9.565-30.321h8.19l4.434,15.582l0.35,1.276 c0.521,1.866,0.917,3.431,1.191,4.693l0.555-2.182c0.219-0.837,0.528-1.935,0.925-3.293l4.468-16.076h8.19l-10.501,30.321 H112.881z" id="path55" style="fill:#8ed300;fill-opacity:1"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
width="500"
height="68.596313"
viewBox="0 0 499.99999 68.596313"
enable-background="new 0 0 226.229 31.038"
xml:space="preserve"
id="svg2"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="verdnatura-white.svg"><metadata
id="metadata61"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs59" /><sodipodi:namedview
pagecolor="#333333"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1013"
id="namedview57"
showgrid="false"
inkscape:zoom="1.5909426"
inkscape:cx="268.25598"
inkscape:cy="112.75218"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" /><g
id="Background"
transform="translate(2.2478643e-6,43.261169)" /><g
id="Guides"
transform="translate(2.2478643e-6,43.261169)" /><g
id="g883"
transform="matrix(2.2101465,0,0,2.2101465,0,-594.44542)"><g
transform="translate(0,268.962)"
style="fill:#ffffff"
id="g9"><path
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path11"
d="M 10.417,30.321 0,0 h 8.233 l 4.26,15.582 0.349,1.276 c 0.521,1.866 0.918,3.431 1.191,4.693 0.15,-0.618 0.335,-1.345 0.555,-2.182 0.219,-0.837 0.528,-1.935 0.925,-3.293 L 19.981,0 h 8.19 l -10.5,30.321 z" /></g><g
transform="translate(0,268.962)"
id="g13"><path
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#8ed300;fill-opacity:1;fill-rule:evenodd"
id="path15"
d="m 139.809,19.787 c -0.665,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.283,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.204,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.653,-1.665 1.98,-2.831 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.925,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.307,-1.159 3.021,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.646,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.076,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.673,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.991,0 3.602,0.241 4.833,0.722 1.231,0.481 2.095,1.209 2.59,2.185 0.339,0.701 0.483,1.536 0.432,2.504 -0.052,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 z" /></g><g
transform="translate(0,268.962)"
id="g17"><path
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#8ed300;fill-opacity:1;fill-rule:evenodd"
id="path19"
d="m 185.7,30.321 6.27,-22.393 h 7.049 l -1.097,3.918 c 1.213,-1.537 2.502,-2.659 3.867,-3.366 1.365,-0.707 2.951,-1.074 4.758,-1.101 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.912,-0.093 -0.303,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -2.104,0.168 -2.932,0.504 -0.829,0.336 -1.561,0.854 -2.197,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.359,4.232 l -2.104,7.516 H 185.7 Z" /></g><g
transform="translate(0,268.962)"
id="g21"><path
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#8ed300;fill-opacity:1;fill-rule:evenodd"
id="path23"
d="m 217.631,19.787 c -0.664,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.282,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.205,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.654,-1.665 1.98,-2.831 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.926,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.306,-1.159 3.02,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.647,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.077,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.672,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.99,0 3.601,0.241 4.833,0.722 1.232,0.481 2.095,1.209 2.591,2.185 0.339,0.701 0.483,1.536 0.431,2.504 -0.051,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 z" /></g><g
transform="translate(0,268.962)"
id="g25"><path
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#8ed300;fill-opacity:1;fill-rule:evenodd"
id="path27"
d="m 188.386,7.928 -6.269,22.393 h -7.174 l 0.864,-3.085 c -1.227,1.246 -2.476,2.163 -3.746,2.751 -1.27,0.588 -2.625,0.882 -4.067,0.882 -2.471,0 -4.154,-0.634 -5.048,-1.901 -0.895,-1.268 -0.993,-3.149 -0.294,-5.644 l 4.31,-15.396 h 7.338 l -3.508,12.53 c -0.516,1.842 -0.641,3.109 -0.375,3.803 0.266,0.694 0.967,1.041 2.105,1.041 1.275,0 2.323,-0.422 3.142,-1.267 0.819,-0.845 1.497,-2.223 2.031,-4.133 l 3.353,-11.974 z" /></g><g
transform="translate(0,268.962)"
id="g29"><path
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#8ed300;fill-opacity:1;fill-rule:evenodd"
id="path31"
d="m 149.937,12.356 1.239,-4.428 h 2.995 l 1.771,-6.326 h 7.338 l -1.771,6.326 h 3.753 l -1.24,4.428 h -3.753 l -2.716,9.702 c -0.416,1.483 -0.498,2.465 -0.247,2.946 0.25,0.48 0.905,0.721 1.964,0.721 l 0.549,-0.011 0.39,-0.031 -1.31,4.678 c -0.811,0.148 -1.596,0.263 -2.354,0.344 -0.758,0.081 -1.48,0.122 -2.167,0.122 -2.543,0 -4.108,-0.621 -4.695,-1.863 -0.587,-1.242 -0.313,-3.887 0.82,-7.936 l 2.428,-8.672 z" /></g><g
transform="translate(0,268.962)"
style="fill:#ffffff"
id="g33"><path
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path35"
d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 Z" /><g
style="fill:#ffffff"
id="g37"><path
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path39"
d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 Z" /></g></g><g
transform="translate(0,268.962)"
style="fill:#ffffff"
id="g41"><path
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path43"
d="M 46.488,30.321 52.757,7.928 h 7.049 l -1.098,3.918 C 59.921,10.309 61.21,9.187 62.576,8.48 63.942,7.773 68.591,7.406 70.398,7.379 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.911,-0.093 -0.304,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -5.167,0.168 -5.997,0.504 -0.829,0.336 -1.561,0.854 -2.196,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.36,4.232 l -2.104,7.516 h -7.296 z" /></g><g
transform="translate(0,268.962)"
style="fill:#ffffff"
id="g45"><path
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path47"
d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" /><g
style="fill:#ffffff"
id="g49"><path
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path51"
d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" /></g></g><g
transform="translate(0,268.962)"
id="g53"><path
inkscape:connector-curvature="0"
style="fill:#8ed300;fill-opacity:1"
id="path55"
d="m 112.881,30.643 -6.404,-18.639 -6.455,18.639 h -7.254 l 9.565,-30.321 h 8.19 l 4.434,15.582 0.35,1.276 c 0.521,1.866 0.917,3.431 1.191,4.693 l 0.555,-2.182 c 0.219,-0.837 0.528,-1.935 0.925,-3.293 l 4.468,-16.076 h 8.19 l -10.501,30.321 z" /></g></g></svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,7 +1,7 @@
[
{
"filename": "email-logo.png",
"path": "/assets/images/email-logo.png",
"cid": "email-logo.png"
"filename": "logo-black.png",
"path": "/assets/images/logo-black.png",
"cid": "logo-black.png"
}
]

View File

@ -1,5 +1,8 @@
<header>
<a href="https://www.verdnatura.es" target="_blank">
<img :src="getEmailSrc('email-logo.png')" alt="VerdNatura"/>
</a>
<div class="logo">
<a href="https://www.verdnatura.es" target="_blank">
<img v-bind:src="getEmailSrc('logo-black.png')" alt="VerdNatura"/>
</a>
</div>
<div class="topbar"></div>
</header>

View File

@ -3,7 +3,16 @@ const Email = require('./email');
module.exports = app => {
app.get(`/api/report/:name`, async(req, res, next) => {
const args = Object.assign({}, req.body, req.query);
const args = req.query;
const requiredArgs = ['clientId'];
const hasRequiredArgs = requiredArgs.every(arg => {
return args[arg];
});
if (!hasRequiredArgs)
res.json({message: 'Required params recipient, clientId'});
try {
const report = new Report(req.params.name, args);
const stream = await report.toPdfStream();
@ -39,48 +48,4 @@ module.exports = app => {
next(e);
}
});
/**
* Enables a report
*
* @param {String} name - Report state path
*/
function registerReport(name) {
if (!name) throw new Error('Report name required');
app.get(`/api/report/${name}`, async(request, response) => {
const args = Object.assign({}, request.body, request.query);
const report = new Report(name, args);
const stream = await report.toPdf();
response.setHeader('Content-type', 'application/pdf');
stream.pipe(response);
});
}
/**
* Enables a email
*
* @param {String} name - Report state path
*/
function registerEmail(name) {
if (!name) throw new Error('Email name required');
app.get(`/api/email/${name}`, (request, response, next) => {
emailEngine.render(name, request).then(rendered => {
response.send(rendered.html);
}).catch(e => {
next(e);
});
});
app.post(`/api/email/${name}`, (request, response, next) => {
emailEngine.toEmail(name, request).then(() => {
response.status(200).json({status: 200});
}).catch(e => {
next(e);
});
});
}
};

View File

@ -1,7 +1,8 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,29 +4,47 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<p>{{$t('description.dear')}},</p>
<p>{{$t('description.instructions')}}</p>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{$t('description.dear')}},</p>
<p>{{$t('description.instructions')}}</p>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,7 +1,8 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,75 +4,93 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{$t('dearClient')}},</p>
<p v-html="$t('clientData')"></p>
<p>
<div>{{$t('clientId')}}: <strong>{{client.id}}</strong></div>
<div>{{$t('user')}}: <strong>{{client.userName}}</strong></div>
<div>{{$t('password')}}: <strong>********</strong>
(<a href="https://verdnatura.es">{{$t('passwordResetText')}}</a>)
</div>
</p>
<p>{{$t('dearClient')}},</p>
<p v-html="$t('clientData')"></p>
<p>
<div>{{$t('clientId')}}: <strong>{{client.id}}</strong></div>
<div>{{$t('user')}}: <strong>{{client.userName}}</strong></div>
<div>{{$t('password')}}: <strong>********</strong>
(<a href="https://verdnatura.es">{{$t('passwordResetText')}}</a>)
</div>
</p>
<h1>{{$t('sections.howToBuy.title')}}</h1>
<p>{{$t('sections.howToBuy.description')}}</p>
<ol>
<li v-for="requeriment in $t('sections.howToBuy.requeriments')">
<span v-html="requeriment"></span>
</li>
</ol>
<p>{{$t('sections.howToBuy.stock')}}</p>
<p>{{$t('sections.howToBuy.delivery')}}</p>
<h1>{{$t('sections.howToPay.title')}}</h1>
<p>{{$t('sections.howToPay.description')}}</p>
<ul>
<li v-for="option in $t('sections.howToPay.options')">
<span v-html="option"></span>
</li>
</ul>
<h1>{{$t('sections.howToBuy.title')}}</h1>
<p>{{$t('sections.howToBuy.description')}}</p>
<ol>
<li v-for="requeriment in $t('sections.howToBuy.requeriments')">
<span v-html="requeriment"></span>
</li>
</ol>
<p>{{$t('sections.howToBuy.stock')}}</p>
<p>{{$t('sections.howToBuy.delivery')}}</p>
<h1>{{$t('sections.howToPay.title')}}</h1>
<p>{{$t('sections.howToPay.description')}}</p>
<ul>
<li v-for="option in $t('sections.howToPay.options')">
<span v-html="option"></span>
</li>
</ul>
<h1>{{$t('sections.toConsider.title')}}</h1>
<p>{{$t('sections.toConsider.description')}}</p>
<h1>{{$t('sections.toConsider.title')}}</h1>
<p>{{$t('sections.toConsider.description')}}</p>
<h4>{{$t('sections.claimsPolicy.title')}}</h4>
<p>{{$t('sections.claimsPolicy.description')}}</p>
<h4>{{$t('sections.claimsPolicy.title')}}</h4>
<p>{{$t('sections.claimsPolicy.description')}}</p>
<p v-html="$t('help')"></p>
<p>
<section v-if="client.salesPersonName">
{{$t('salesPersonName')}}: <strong>{{client.salesPersonName}}</strong>
</section>
<section v-if="client.salesPersonPhone">
{{$t('salesPersonPhone')}}: <strong>{{client.salesPersonPhone}}</strong>
</section>
<section v-if="client.salesPersonEmail">
{{$t('salesPersonEmail')}}:
<strong><a v-bind:href="`mailto: ${client.salesPersonEmail}`" target="_blank">{{client.salesPersonEmail}}</strong>
</section>
</p>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<p v-html="$t('help')"></p>
<p>
<section v-if="client.salesPersonName">
{{$t('salesPersonName')}}: <strong>{{client.salesPersonName}}</strong>
</section>
<section v-if="client.salesPersonPhone">
{{$t('salesPersonPhone')}}: <strong>{{client.salesPersonPhone}}</strong>
</section>
<section v-if="client.salesPersonEmail">
{{$t('salesPersonEmail')}}:
<strong><a v-bind:href="`mailto: ${client.salesPersonEmail}`" target="_blank">{{client.salesPersonEmail}}</strong>
</section>
</p>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,7 +1,8 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,30 +4,48 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<p>{{$t('dearClient')}},</p>
<p v-html="$t('clientData')"></p>
<p v-html="$t('help')"></p>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{$t('dearClient')}},</p>
<p v-html="$t('clientData')"></p>
<p v-html="$t('help')"></p>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,7 +1,8 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -0,0 +1,4 @@
[{
"filename": "driver-route.pdf",
"component": "driver-route"
}]

View File

@ -4,27 +4,46 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<p>{{$t('description.instructions')}}</p>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{$t('description.instructions')}}</p>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,7 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,68 +4,90 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<p>{{ $t('sections.introduction.title') }},</p>
<p>{{ $t('sections.introduction.description') }}</p>
<p>{{ $t('sections.introduction.terms') }}</p>
<p>
{{ $t('sections.payMethod.description') }}:
<ol>
<li v-for="option in $t('sections.payMethod.options')">
{{ option }}
</li>
</ol>
</p>
<p>
{{ $t('sections.legalAction.description') }}:
<ol type="a">
<li v-for="option in $t('sections.legalAction.options')">
{{ option }}
</li>
</ol>
</p>
<p v-html="$t('contactPhone')"></p>
<p v-html="$t('conclusion')"></p>
<p>
<div class="row">
<div class="text">{{debtor.bankName}}</div>
<div class="control">{{debtor.iban}}</div>
<div class="description">
<div class="line"><span>{{$t('transferAccount') }}</span></div>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</div>
</p>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{ $t('sections.introduction.title') }},</p>
<p>{{ $t('sections.introduction.description') }}</p>
<p>{{ $t('sections.introduction.terms') }}</p>
<setion v-if="isPreview">
<attachment v-for="attachment in attachments"
v-bind:attachment="attachment"
v-bind:args="$props">
</attachment>
</setion>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<p>
{{ $t('sections.payMethod.description') }}:
<ol>
<li v-for="option in $t('sections.payMethod.options')">
{{ option }}
</li>
</ol>
</p>
<p>
{{ $t('sections.legalAction.description') }}:
<ol type="a">
<li v-for="option in $t('sections.legalAction.options')">
{{ option }}
</li>
</ol>
</p>
<p v-html="$t('contactPhone')"></p>
<p v-html="$t('conclusion')"></p>
<p>
<div class="row">
<div class="text">{{debtor.bankName}}</div>
<div class="control">{{debtor.iban}}</div>
<div class="description">
<div class="line"><span>{{$t('transferAccount') }}</span></div>
</div>
</div>
</p>
</div>
</div>
<!-- Block -->
<div class="grid-row" v-if="isPreview">
<div class="grid-block white vn-pa-lg">
<attachment v-for="attachment in attachments"
v-bind:key="attachment.filename"
v-bind:attachment="attachment"
v-bind:is-preview="isPreview"
v-bind:args="$props">
</attachment>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,7 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,51 +4,73 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<p>{{ $t('sections.introduction.title') }},</p>
<p>{{ $t('sections.introduction.description') }}</p>
<p>{{ $t('checkExtract') }}</p>
<p>{{ $t('checkValidData') }}</p>
<p>{{ $t('payMethod') }}</p>
<p>{{ $t('conclusion') }}</p>
<p>
<div class="row">
<div class="text">{{debtor.bankName}}</div>
<div class="control">{{debtor.iban}}</div>
<div class="description">
<div class="line"><span>{{$t('transferAccount') }}</span></div>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</div>
</p>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{ $t('sections.introduction.title') }},</p>
<p>{{ $t('sections.introduction.description') }}</p>
<setion v-if="isPreview">
<attachment v-for="attachment in attachments"
v-bind:attachment="attachment"
v-bind:args="$props">
</attachment>
</setion>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<p>{{ $t('checkExtract') }}</p>
<p>{{ $t('checkValidData') }}</p>
<p>{{ $t('payMethod') }}</p>
<p>{{ $t('conclusion') }}</p>
<p>
<div class="row">
<div class="text">{{debtor.bankName}}</div>
<div class="control">{{debtor.iban}}</div>
<div class="description">
<div class="line"><span>{{$t('transferAccount') }}</span></div>
</div>
</div>
</p>
</div>
</div>
<!-- Block -->
<div class="grid-row" v-if="isPreview">
<div class="grid-block white vn-pa-lg">
<attachment v-for="attachment in attachments"
v-bind:key="attachment.filename"
v-bind:attachment="attachment"
v-bind:is-preview="isPreview"
v-bind:args="$props">
</attachment>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,5 +1,5 @@
subject: Aviso inicial por saldo deudor
title: Aviso inicial
title: Aviso inicial por saldo deudor
sections:
introduction:
title: Estimado cliente

View File

@ -1,7 +1,8 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,47 +4,65 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{ $t('sections.introduction.title') }},</p>
<p v-html="`${$t('sections.introduction.description')}:`"></p>
<p>{{ $t('sections.introduction.title') }},</p>
<p v-html="`${$t('sections.introduction.description')}:`"></p>
<p>
<section>
<span>{{ $t('sections.pay.method') }}:</span>
<strong>{{client.payMethodName}}</strong>
</section>
<section v-if="client.payMethodId != 5">
<span>{{ $t('sections.pay.day') }}:</span>
<strong>{{ $t('sections.pay.dueDay', [client.dueDay]) }}</strong>
</section>
</p>
<p>
<section>
<span>{{ $t('sections.pay.method') }}:</span>
<strong>{{client.payMethodName}}</strong>
</section>
<section v-if="client.payMethodId != 5">
<span>{{ $t('sections.pay.day') }}:</span>
<strong>{{ $t('sections.pay.dueDay', [client.dueDay]) }}</strong>
</section>
</p>
<p v-if="client.payMethodId == 4" v-html="$t('sections.pay.accountImplicates', [client.accountAddress])"></p>
<p v-else-if="client.payMethodId == 5">
{{ $t('sections.pay.cardImplicates') }}
</p>
<p v-if="client.payMethodId == 4" v-html="$t('sections.pay.accountImplicates', [client.accountAddress])"></p>
<p v-else-if="client.payMethodId == 5">
{{ $t('sections.pay.cardImplicates') }}
</p>
<p>{{ $t('notifyAnError') }}</p>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<p>{{ $t('notifyAnError') }}</p>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,7 +1,8 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,65 +4,90 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{$t('description.dear')}},</p>
<p>{{$t('description.instructions')}}</p>
<p v-html="$t('description.followGuide')"></p>
<p v-html="$t('description.downloadFrom')"></p>
<p>{{$t('description.dear')}},</p>
<p>{{$t('description.instructions')}}</p>
<p v-html="$t('description.followGuide')"></p>
<p v-html="$t('description.downloadFrom')"></p>
<h1>{{$t('sections.QLabel.title')}}</h1>
<p>{{$t('sections.QLabel.description')}}:</p>
<ol>
<li v-for="step in $t('sections.QLabel.steps')">
<span v-html="step"></span>
</li>
</ol>
<!-- Help section -->
<h1>{{$t('sections.help.title')}}</h1>
<p>{{$t('sections.help.description')}}</p>
<p v-html="$t('sections.help.remoteSupport')"></p>
<!-- End help section-->
<p>
<section v-if="client.salesPersonName">
{{$t('salesPersonName')}}: <strong>{{client.salesPersonName}}</strong>
</section>
<section v-if="client.salesPersonPhone">
{{$t('salesPersonPhone')}}: <strong>{{client.salesPersonPhone}}</strong>
</section>
<section v-if="client.salesPersonEmail">
{{$t('salesPersonEmail')}}:
<strong><a v-bind:href="`mailto:${client.salesPersonEmail}`" target="_blank">{{client.salesPersonEmail}}</strong>
</section>
</p>
<setion v-if="isPreview">
<attachment v-for="attachment in attachments"
v-bind:attachment="attachment"
v-bind:args="$props">
</attachment>
</setion>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<h1>{{$t('sections.QLabel.title')}}</h1>
<p>{{$t('sections.QLabel.description')}}:</p>
<ol>
<li v-for="step in $t('sections.QLabel.steps')">
<span v-html="step"></span>
</li>
</ol>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{$t('sections.help.title')}}</h1>
<p>{{$t('sections.help.description')}}</p>
<p v-html="$t('sections.help.remoteSupport')"></p>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<div v-if="client.salesPersonName">
{{$t('salesPersonName')}}: <strong>{{client.salesPersonName}}</strong>
</div>
<div v-if="client.salesPersonPhone">
{{$t('salesPersonPhone')}}: <strong>{{client.salesPersonPhone}}</strong>
</div>
<div v-if="client.salesPersonEmail">
{{$t('salesPersonEmail')}}:
<strong><a v-bind:href="`mailto:${client.salesPersonEmail}`" target="_blank">{{client.salesPersonEmail}}</strong>
</div>
</div>
</div>
<!-- Block -->
<div class="grid-row" v-if="isPreview">
<div class="grid-block white vn-pa-lg">
<attachment v-for="attachment in attachments"
v-bind:key="attachment.filename"
v-bind:attachment="attachment"
v-bind:args="$props">
</attachment>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,7 +1,8 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/email.css`,
`${appPath}/common/css/misc.css`])
`${appPath}/common/css/email.css`])
.mergeStyles();

View File

@ -4,37 +4,58 @@
<title>{{ $t('subject') }}</title>
</head>
<body>
<section class="container">
<!-- Header component -->
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">
<h1>{{ $t('title') }}</h1>
</div>
<!-- Title block end -->
<p>{{$t('description.dear')}},</p>
<p>{{$t('description.instructions')}}</p>
<p>{{$t('description.conclusion')}}</p>
<setion v-if="isPreview">
<attachment v-for="attachment in attachments"
v-bind:attachment="attachment"
v-bind:args="$props">
</attachment>
</setion>
</section>
<!-- Footer component -->
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<email-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{$t('description.dear')}},</p>
<p>{{$t('description.instructions')}}</p>
<p>{{$t('description.conclusion')}}</p>
</div>
</div>
<!-- Block -->
<div class="grid-row" v-if="isPreview">
<div class="grid-block white vn-pa-lg">
<attachment v-for="attachment in attachments"
v-bind:key="attachment.filename"
v-bind:attachment="attachment"
v-bind:args="$props">
</attachment>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<email-footer
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</email-footer>
</div>
</div>
<!-- Empty block -->
<div class="grid-row">
<div class="grid-block empty"></div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/report.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -1,91 +1,106 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container">
<!-- Header component -->
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
<!-- End header component -->
<section class="main">
<section class="columns">
<section class="size50">
<section class="size75">
<h1 class="title uppercase">{{$t('title')}}</h1>
<table class="row-oriented">
<tbody>
<tr>
<td class="font gray uppercase">{{$t('claimId')}}</td>
<th>{{claimId}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('clientId')}}</td>
<th>{{client.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('date')}}</td>
<th>{{currentDate}}</th>
</tr>
</tbody>
</table>
</section>
</section>
<section class="size50">
<section class="panel">
<section class="header">{{$t('clientData')}}</section>
<section class="body">
<h3 class="uppercase">{{client.nickname}}</h3>
<section>
{{client.street}}
</section>
<section>
{{client.postalCode}}, {{client.city}} ({{client.province}})
</section>
<section>
{{client.country}}
</section>
</section>
</section>
</section>
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block">
<div class="columns">
<div class="size50">
<div class="size75">
<h1 class="title uppercase">{{$t('title')}}</h1>
<table class="row-oriented">
<tbody>
<tr>
<td class="font gray uppercase">{{$t('claimId')}}</td>
<th>{{claimId}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('clientId')}}</td>
<th>{{client.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('date')}}</td>
<th>{{currentDate}}</th>
</tr>
</tbody>
</table>
</div>
</div>
<div class="size50">
<div class="panel">
<div class="header">{{$t('clientData')}}</div>
<div class="body">
<h3 class="uppercase">{{client.nickname}}</h3>
<div>
{{client.street}}
</div>
<div>
{{client.postalCode}}, {{client.city}} ({{client.province}})
</div>
<div>
{{client.country}}
</div>
</div>
</div>
</div>
</div>
<table class="column-oriented">
<thead>
<tr>
<th>{{$t('reference')}}</th>
<th class="number">{{$t('quantity')}}</th>
<th class="number">{{$t('claims')}}</th>
<th>{{$t('concept')}}</th>
</tr>
</thead>
<tbody>
<tr v-for="sale in sales" v-bind:key="sale.id">
<td class="font gray">{{sale.id}}</td>
<td class="number">{{sale.quantity}}</td>
<td class="number">{{sale.claimQuantity}}</td>
<td>{{sale.concept}}</td>
</tr>
</tbody>
</table>
<div class="panel sign">
<div class="header">{{$t('clientSignature')}}</div>
<div class="body centered">
<h3>{{client.name}}</h3>
</div>
</div>
<table class="column-oriented">
<thead>
<tr>
<th>{{$t('reference')}}</th>
<th class="number">{{$t('quantity')}}</th>
<th class="number">{{$t('claims')}}</th>
<th>{{$t('concept')}}</th>
</tr>
</thead>
<tbody>
<tr v-for="sale in sales" v-bind:key="sale.id">
<td class="font gray">{{sale.id}}</td>
<td class="number">{{sale.quantity}}</td>
<td class="number">{{sale.claimQuantity}}</td>
<td>{{sale.concept}}</td>
</tr>
</tbody>
</table>
<section class="panel sign">
<section class="header">{{$t('clientSignature')}}</section>
<section class="body centered">
<h3>{{client.name}}</h3>
</section>
</section>
<p v-html="$t('sections.agency.description')"></p>
</section>
<!-- Footer component -->
<report-footer id="pageFooter"
v-bind:left-text="$t('claim', [claimId])"
v-bind:center-text="client.name"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
<!-- End footer component -->
</section>
<p v-html="$t('sections.agency.description')"></p>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<report-footer id="pageFooter"
v-bind:left-text="$t('claim', [claimId])"
v-bind:center-text="client.name"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/report.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -1,238 +1,253 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container">
<!-- Header component -->
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
<!-- End header component -->
<section class="main">
<section class="columns">
<section class="size50">
<section class="size75">
<h1 class="title uppercase">{{$t('title')}}</h1>
<table class="row-oriented">
<tbody>
<tr>
<td class="font gray uppercase">{{$t('clientId')}}</td>
<th>{{client.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('ticketId')}}</td>
<th>{{ticket.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('date')}}</td>
<th>{{ticket.shipped | date('%d-%m-%Y')}}</th>
</tr>
</tbody>
</table>
</section>
</section>
<section class="size50">
<section class="panel">
<section class="header">{{$t('deliveryAddress')}}</section>
<section class="body">
<h3 class="uppercase">{{address.nickname}}</h3>
<section>
{{address.street}}
</section>
<section>
{{address.postalCode}}, {{address.city}} ({{address.province}})
</section>
</section>
</section>
<section class="panel">
<section class="header">{{$t('fiscalData')}}</section>
<section class="body">
<section>
{{client.socialName}}
</section>
<section>
{{client.street}}
</section>
<section>
{{client.fi}}
</section>
</section>
</section>
</section>
</section>
<!-- Sales block -->
<h3>{{$t('saleLines')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>{{$t('reference')}}</td>
<td class="number">{{$t('quantity')}}</td>
<td>{{$t('concept')}}</td>
<td class="number">{{$t('price')}}</td>
<td class="centered">{{$t('discount')}}</td>
<td class="centered">{{$t('vat')}}</td>
<td class="number">{{$t('amount')}}</td>
</tr>
</thead>
<tbody>
<template v-for="sale in sales">
<tr class="font bold">
<td>{{sale.itemFk}}</td>
<td class="number">{{sale.quantity}}</td>
<td>{{sale.concept}}</td>
<td class="number">{{sale.price | currency('EUR', locale)}}</td>
<td class="centered">{{sale.discount | percentage}}</td>
<td class="centered">{{sale.vatType}}</td>
<td class="number">{{sale.price * sale.quantity * (1 - sale.discount / 100) | currency('EUR', locale)}}</td>
</tr>
<tr class="description">
<td colspan="2" class="centered">
<strong class="font gray" v-if="sale.val1">{{sale.tag1}}</strong>
<span>{{sale.val1}}</span>
</td>
<td colspan="3" class="centered">
<strong class="font gray" v-if="sale.val2">{{sale.tag2}}</strong>
<span>{{sale.val2}}</span>
</td>
<td colspan="2" class="centered">
<strong class="font gray" v-if="sale.val3">{{sale.tag3}}</strong>
<span>{{sale.val3}}</span>
</td>
</tr>
<tr class="description phytosanitary" v-if="sale.passportNumber">
<td colspan="7">
{{sale.ediBotanic}} {{sale.denomination}} {{sale.countryCode}}-{{sale.passportNumber}}
<span v-if="sale.isProtectedZone">ZP</span>
</td>
</tr>
</template>
<tr >
<td colspan="7"></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="6">
<span class="pull-right">{{$t('subtotal')}}</span>
</td>
<td class="number">{{getSubTotal() | currency('EUR', locale)}}</td>
</tr>
</tfoot>
</table>
<!-- End of sales block -->
<section class="columns">
<!-- Services block-->
<section class="size100" v-if="services.length > 0">
<h3>{{$t('services')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>{{$t('concept')}}</td>
<td class="number">{{$t('quantity')}}</td>
<td>{{$t('vatType')}}</td>
<td class="number">{{$t('amount')}}</td>
</tr>
</thead>
<tbody>
<tr v-for="service in services">
<td>{{service.description}}</td>
<td class="number">{{service.quantity}}</td>
<td>{{service.taxDescription}}</td>
<td class="number">{{service.price | currency('EUR', locale)}}</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3"></td>
<td class="number">{{$t('total')}} {{serviceTotal | currency('EUR', locale)}}</td>
</tr>
</tfoot>
</table>
</section>
<!-- End of services block -->
<!-- Taxes block -->
<section id="taxes" class="size50 pull-right" v-if="taxes">
<h3>{{$t('taxBreakdown')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>{{$t('type')}}</td>
<td class="number">{{$t('taxBase')}}</td>
<td>{{$t('tax')}}</td>
<td class="number">{{$t('fee')}}</td>
</tr>
</thead>
<tbody>
<tr v-for="tax in taxes">
<td>{{tax.name}}</td>
<td class="number">{{tax.Base | currency('EUR', locale)}}</td>
<td>{{tax.vatPercent | percentage}}</td>
<td class="number">{{tax.tax | currency('EUR', locale)}}</td>
</tr>
</tbody>
<tfoot>
<tr class="font bold">
<td>{{$t('subtotal')}}</td>
<td class="number">{{getTotalBase() | currency('EUR', locale)}}</td>
<td></td>
<td class="number">{{getTotalTax()| currency('EUR', locale)}}</td>
</tr>
<tr class="font bold">
<td colspan="2">{{$t('total')}}</td>
<td colspan="2" class="number">{{getTotal() | currency('EUR', locale)}}</td>
</tr>
</tfoot>
</table>
</section>
<!-- End of taxes block -->
<!-- Packages block -->
<section id="packagings" class="size100" v-if="packagings.length > 0">
<h3>{{$t('packagings')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>Id</td>
<td>{{$t('concept')}}</td>
<td class="number">{{$t('quantity')}}</td>
</tr>
</thead>
<tbody>
<tr v-for="packaging in packagings">
<td>{{packaging.itemFk}}</td>
<td>{{packaging.name}}</td>
<td class="number">{{packaging.quantity}}</td>
</tr>
</tbody>
</table>
</section>
<!-- End of packages block -->
<!-- Signature block -->
<section class="size50 pull-left">
<section id="signature" class="panel" v-if="signature && signature.id">
<section class="header">{{$t('digitalSignature')}}</section>
<section class="body centered">
<img v-bind:src="dmsPath"/>
<section>{{signature.created | date}}</section>
</section>
</section>
</section>
<!-- End of signature block -->
</section>
</section>
<!-- Footer component -->
<report-footer id="pageFooter"
v-bind:left-text="$t('ticket', [ticket.id])"
v-bind:center-text="client.socialName"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block">
<div class="columns">
<div class="size50">
<div class="size75">
<h1 class="title uppercase">{{$t('title')}}</h1>
<table class="row-oriented">
<tbody>
<tr>
<td class="font gray uppercase">{{$t('clientId')}}</td>
<th>{{client.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('ticketId')}}</td>
<th>{{ticket.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('date')}}</td>
<th>{{ticket.shipped | date('%d-%m-%Y')}}</th>
</tr>
</tbody>
</table>
</div>
</div>
<div class="size50">
<div class="panel">
<div class="header">{{$t('deliveryAddress')}}</div>
<div class="body">
<h3 class="uppercase">{{address.nickname}}</h3>
<div>
{{address.street}}
</div>
<div>
{{address.postalCode}}, {{address.city}} ({{address.province}})
</div>
</div>
</div>
<div class="panel">
<div class="header">{{$t('fiscalData')}}</div>
<div class="body">
<div>
{{client.socialName}}
</div>
<div>
{{client.street}}
</div>
<div>
{{client.fi}}
</div>
</div>
</div>
</div>
</div>
<!-- Sales block -->
<h3>{{$t('saleLines')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>{{$t('reference')}}</td>
<td class="number">{{$t('quantity')}}</td>
<td>{{$t('concept')}}</td>
<td class="number">{{$t('price')}}</td>
<td class="centered">{{$t('discount')}}</td>
<td class="centered">{{$t('vat')}}</td>
<td class="number">{{$t('amount')}}</td>
</tr>
</thead>
<tbody>
<template v-for="sale in sales">
<tr class="font bold">
<td>{{sale.itemFk}}</td>
<td class="number">{{sale.quantity}}</td>
<td>{{sale.concept}}</td>
<td class="number">{{sale.price | currency('EUR', locale)}}</td>
<td class="centered">{{sale.discount | percentage}}</td>
<td class="centered">{{sale.vatType}}</td>
<td class="number">{{sale.price * sale.quantity * (1 - sale.discount / 100) | currency('EUR', locale)}}</td>
</tr>
<tr class="description">
<td colspan="2" class="centered">
<strong class="font gray" v-if="sale.val1">{{sale.tag1}}</strong>
<span>{{sale.val1}}</span>
</td>
<td colspan="3" class="centered">
<strong class="font gray" v-if="sale.val2">{{sale.tag2}}</strong>
<span>{{sale.val2}}</span>
</td>
<td colspan="2" class="centered">
<strong class="font gray" v-if="sale.val3">{{sale.tag3}}</strong>
<span>{{sale.val3}}</span>
</td>
</tr>
<tr class="description phytosanitary" v-if="sale.passportNumber">
<td colspan="7">
{{sale.ediBotanic}} {{sale.denomination}} {{sale.countryCode}}-{{sale.passportNumber}}
<span v-if="sale.isProtectedZone">ZP</span>
</td>
</tr>
</template>
<tr >
<td colspan="7"></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="6">
<span class="pull-right">{{$t('subtotal')}}</span>
</td>
<td class="number">{{getSubTotal() | currency('EUR', locale)}}</td>
</tr>
</tfoot>
</table>
<!-- End of sales block -->
<div class="columns">
<!-- Services block-->
<div class="size100" v-if="services.length > 0">
<h3>{{$t('services')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>{{$t('concept')}}</td>
<td class="number">{{$t('quantity')}}</td>
<td>{{$t('vatType')}}</td>
<td class="number">{{$t('amount')}}</td>
</tr>
</thead>
<tbody>
<tr v-for="service in services">
<td>{{service.description}}</td>
<td class="number">{{service.quantity}}</td>
<td>{{service.taxDescription}}</td>
<td class="number">{{service.price | currency('EUR', locale)}}</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3"></td>
<td class="number">{{$t('total')}} {{serviceTotal | currency('EUR', locale)}}</td>
</tr>
</tfoot>
</table>
</div>
<!-- End of services block -->
<!-- Taxes block -->
<div id="taxes" class="size50 pull-right" v-if="taxes">
<h3>{{$t('taxBreakdown')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>{{$t('type')}}</td>
<td class="number">{{$t('taxBase')}}</td>
<td>{{$t('tax')}}</td>
<td class="number">{{$t('fee')}}</td>
</tr>
</thead>
<tbody>
<tr v-for="tax in taxes">
<td>{{tax.name}}</td>
<td class="number">{{tax.Base | currency('EUR', locale)}}</td>
<td>{{tax.vatPercent | percentage}}</td>
<td class="number">{{tax.tax | currency('EUR', locale)}}</td>
</tr>
</tbody>
<tfoot>
<tr class="font bold">
<td>{{$t('subtotal')}}</td>
<td class="number">{{getTotalBase() | currency('EUR', locale)}}</td>
<td></td>
<td class="number">{{getTotalTax()| currency('EUR', locale)}}</td>
</tr>
<tr class="font bold">
<td colspan="2">{{$t('total')}}</td>
<td colspan="2" class="number">{{getTotal() | currency('EUR', locale)}}</td>
</tr>
</tfoot>
</table>
</div>
<!-- End of taxes block -->
<!-- Packages block -->
<div id="packagings" class="size100" v-if="packagings.length > 0">
<h3>{{$t('packagings')}}</h3>
<table class="column-oriented">
<thead>
<tr>
<td>Id</td>
<td>{{$t('concept')}}</td>
<td class="number">{{$t('quantity')}}</td>
</tr>
</thead>
<tbody>
<tr v-for="packaging in packagings">
<td>{{packaging.itemFk}}</td>
<td>{{packaging.name}}</td>
<td class="number">{{packaging.quantity}}</td>
</tr>
</tbody>
</table>
</div>
<!-- End of packages block -->
<!-- Signature block -->
<div class="size50 pull-left">
<div id="signature" class="panel" v-if="signature && signature.id">
<div class="header">{{$t('digitalSignature')}}</div>
<div class="body centered">
<img v-bind:src="dmsPath"/>
<div>{{signature.created | date}}</div>
</div>
</div>
</div>
<!-- End of signature block -->
</div>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<report-footer id="pageFooter"
v-bind:left-text="$t('ticket', [ticket.id])"
v-bind:center-text="client.socialName"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/report.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -1,160 +1,174 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container" id="report">
<!-- Header component -->
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
<!-- End header component -->
<section class="main">
<h1 class="title uppercase">{{$t('title')}}</h1>
<section class="panel">
<section class="header">{{$t('information')}}</section>
<section class="body">
<section>
<table width="100%">
<tbody>
<tr>
<th class="font gray align-right">{{$t('route')}}</th>
<td>{{route.id}}</td>
<th class="font gray align-right">{{$t('driver')}}</th>
<td>{{route.userNickName}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('date')}}</th>
<td>{{route.created | date('%d-%m-%Y')}}</td>
<th class="font gray align-right">{{$t('vehicle')}}</th>
<td>{{route.vehicleTradeMark}} {{route.vehicleModel}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('time')}}</th>
<td>{{route.time | date('%H:%M')}}</td>
<td></td>
<td>{{route.plateNumber}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('volume')}}</th>
<td>{{route.m3}}</td>
<th class="font gray align-right">{{$t('agency')}}</th>
<td>{{route.agencyName}}</td>
</tr>
</tbody>
</table>
<section class="contained">
<table class="middle centered" width="70%">
<tbody>
<tr>
<td>
<p class="small">Hora inicio</p>
</td>
<td>
<p class="small">Hora fin</p>
</td>
<td class="gap"></td>
<td>
<p class="small">Km inicio</p>
</td>
<td>
<p class="small">Km fin</p>
</td>
</tr>
<tr>
<td v-for="i in 2">
<section class="field rectangle">
<span></span>
</section>
</td>
<td class="gap"></td>
<td v-for="i in 2">
<section class="field rectangle">
<span></span>
</section>
</td>
</tr>
</tbody>
</table>
</section>
</section>
</section>
</section>
<section class="non-page-break" v-for="ticket in tickets">
<section>
<table class="column-oriented repeatable">
<thead>
<tr>
<td class="number">{{$t('order')}}</td>
<td class="number">{{$t('ticket')}}</td>
<td>{{$t('client')}}</td>
<td class="number">{{$t('address')}}</td>
<td class="number">{{$t('packages')}}</td>
</tr>
</thead>
<tbody>
<tr>
<td class="number">{{ticket.priority}}</td>
<td class="number">{{ticket.id}}</td>
<td>{{ticket.clientFk}} {{ticket.addressName}}</td>
<td v-if="ticket.addressFk" class="number">
{{ticket.addressFk.toString().substr(0, ticket.addressFk.toString().length - 3)}}
<span class="black-container">
{{ticket.addressFk.toString().substr(-3, 3)}}
</span>
</td>
<td class="number">{{ticket.packages}}</td>
</tr>
</tbody>
</table>
</section>
<section>
<table width="100%">
<tbody>
<tr>
<th class="font gray align-right">{{$t('street')}}</th>
<td>{{ticket.street}}</td>
<th class="font gray align-right">{{$t('postcode')}}</th>
<td>{{ticket.postalCode}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('city')}}</th>
<td>{{ticket.city}}</td>
<th class="font gray align-right">{{$t('agency')}}</th>
<td>{{ticket.ticketAgency}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('mobile')}}</th>
<td>{{ticket.mobile}}</td>
<th class="font gray align-right">{{$t('phone')}}</th>
<td>{{ticket.phone}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('warehouse')}}</th>
<td>{{ticket.warehouseName}}</td>
<th class="font gray align-right">{{$t('salesPerson')}}</th>
<td>{{ticket.salesPersonName}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('import')}}</th>
<td>{{ticket.import}}</td>
</tr>
</tbody>
</table>
<section v-if="ticket.description || ticket.shipFk" class="text-area">
<p>{{ticket.description}}</p>
<p v-if="ticket.shipFk">{{$t('stowaway')}}: {{ticket.shipFk}}</p>
</section>
</section>
</section>
</section>
</section>
<!-- Footer component -->
<report-footer id="pageFooter"
v-bind:left-text="$t('routeId', [route.id])"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block">
<h1 class="title uppercase">{{$t('title')}}</h1>
<div class="panel">
<div class="header">{{$t('information')}}</div>
<div class="body">
<div>
<table width="100%">
<tbody>
<tr>
<th class="font gray align-right">{{$t('route')}}</th>
<td>{{route.id}}</td>
<th class="font gray align-right">{{$t('driver')}}</th>
<td>{{route.userNickName}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('date')}}</th>
<td>{{route.created | date('%d-%m-%Y')}}</td>
<th class="font gray align-right">{{$t('vehicle')}}</th>
<td>{{route.vehicleTradeMark}} {{route.vehicleModel}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('time')}}</th>
<td>{{route.time | date('%H:%M')}}</td>
<td></td>
<td>{{route.plateNumber}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('volume')}}</th>
<td>{{route.m3}}</td>
<th class="font gray align-right">{{$t('agency')}}</th>
<td>{{route.agencyName}}</td>
</tr>
</tbody>
</table>
<div class="contained">
<table class="middle centered" width="70%">
<tbody>
<tr>
<td>
<p class="small">Hora inicio</p>
</td>
<td>
<p class="small">Hora fin</p>
</td>
<td class="gap"></td>
<td>
<p class="small">Km inicio</p>
</td>
<td>
<p class="small">Km fin</p>
</td>
</tr>
<tr>
<td v-for="i in 2">
<div class="field rectangle">
<span></span>
</div>
</td>
<td class="gap"></td>
<td v-for="i in 2">
<div class="field rectangle">
<span></span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="non-page-break" v-for="ticket in tickets">
<div>
<table class="column-oriented repeatable">
<thead>
<tr>
<td class="number">{{$t('order')}}</td>
<td class="number">{{$t('ticket')}}</td>
<td>{{$t('client')}}</td>
<td class="number">{{$t('address')}}</td>
<td class="number">{{$t('packages')}}</td>
</tr>
</thead>
<tbody>
<tr>
<td class="number">{{ticket.priority}}</td>
<td class="number">{{ticket.id}}</td>
<td>{{ticket.clientFk}} {{ticket.addressName}}</td>
<td v-if="ticket.addressFk" class="number">
{{ticket.addressFk.toString().substr(0, ticket.addressFk.toString().length - 3)}}
<span class="black-container">
{{ticket.addressFk.toString().substr(-3, 3)}}
</span>
</td>
<td class="number">{{ticket.packages}}</td>
</tr>
</tbody>
</table>
</div>
<div>
<table width="100%">
<tbody>
<tr>
<th class="font gray align-right">{{$t('street')}}</th>
<td>{{ticket.street}}</td>
<th class="font gray align-right">{{$t('postcode')}}</th>
<td>{{ticket.postalCode}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('city')}}</th>
<td>{{ticket.city}}</td>
<th class="font gray align-right">{{$t('agency')}}</th>
<td>{{ticket.ticketAgency}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('mobile')}}</th>
<td>{{ticket.mobile}}</td>
<th class="font gray align-right">{{$t('phone')}}</th>
<td>{{ticket.phone}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('warehouse')}}</th>
<td>{{ticket.warehouseName}}</td>
<th class="font gray align-right">{{$t('salesPerson')}}</th>
<td>{{ticket.salesPersonName}}</td>
</tr>
<tr>
<th class="font gray align-right">{{$t('import')}}</th>
<td>{{ticket.import}}</td>
</tr>
</tbody>
</table>
<div v-if="ticket.description || ticket.shipFk" class="text-area">
<p>{{ticket.description}}</p>
<p v-if="ticket.shipFk">{{$t('stowaway')}}: {{ticket.shipFk}}</p>
</div>
</div>
</div>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<report-footer id="pageFooter"
v-bind:left-text="$t('routeId', [route.id])"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>
</html>

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/report.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -1,28 +1,35 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container" id="report">
<section class="label">
<section class="barcode">
<h1>{{item.id}}</h1>
<section class="image">
<img v-bind:src="barcode"/>
</section>
</section>
<section class="data">
<section class="header">{{item.name}}</section>
<section class="color">{{tags.color}}</section>
<section class="producer">{{tags.producer}}</section>
<section class="details">
<section class="package">
<section class="packing">{{packing()}}</section>
<section class="dated">{{dated}}</section>
<section class="labelNumber">{{labelPage}}</section>
</section>
<section class="size">{{item.size}}</section>
</section>
</section>
</section>
</section>
<table class="grid">
<tbody>
<tr>
<td>
<div class="label">
<div class="barcode">
<h1>{{item.id}}</h1>
<div class="image">
<img v-bind:src="barcode"/>
</div>
</div>
<div class="data">
<div class="header">{{item.name}}</div>
<div class="color">{{tags.color}}</div>
<div class="producer">{{tags.producer}}</div>
<div class="details">
<div class="package">
<div class="packing">{{packing()}}</div>
<div class="dated">{{dated}}</div>
<div class="labelNumber">{{labelPage}}</div>
</div>
<div class="size">{{item.size}}</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>
</html>

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/report.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -1,89 +1,104 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container">
<!-- Header component -->
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
<!-- End header component -->
<section class="main">
<section class="columns">
<section class="size50">
<section class="size75">
<h1 class="title uppercase">{{$t('title')}}</h1>
<table class="row-oriented">
<tbody>
<tr>
<td class="font gray uppercase">{{$t('clientId')}}</td>
<th>{{client.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('dated')}}</td>
<th>{{dated}}</th>
</tr>
</tbody>
</table>
</section>
</section>
<section class="size50">
<section class="panel">
<section class="header">{{$t('clientData')}}</section>
<section class="body">
<h3 class="uppercase">{{client.socialName}}</h3>
<section>
{{client.street}}
</section>
<section>
{{client.postcode}}, {{client.city}} ({{client.province}})
</section>
<section>
{{client.country}}
</section>
</section>
</section>
</section>
</section>
<table class="column-oriented">
<thead>
<tr>
<th>{{$t('date')}}</th>
<th>{{$t('concept')}}</th>
<th class="number">{{$t('invoiced')}}</th>
<th class="number">{{$t('payed')}}</th>
<th class="number">{{$t('balance')}}</th>
</tr>
</thead>
<tbody>
<tr v-for="sale in sales" :key="sale.id">
<td>{{sale.issued | date('%d-%m-%Y')}}</td>
<td>{{sale.ref}}</td>
<td class="number">{{sale.debtOut}}</td>
<td class="number">{{sale.debtIn}}</td>
<td class="number">{{getBalance(sale)}}</td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
<td></td>
<td class="number"><strong class="pull-left">Total</strong> {{getTotalDebtOut()}}</td>
<td class="number">{{getTotalDebtIn()}}</td>
<td class="number">{{totalBalance}}</td>
</tr>
</tfoot>
</table>
</section>
<!-- Footer component -->
<report-footer id="pageFooter"
v-bind:left-text="$t('client', [client.id])"
v-bind:center-text="client.socialName"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block">
<div class="columns">
<div class="size50">
<div class="size75">
<h1 class="title uppercase">{{$t('title')}}</h1>
<table class="row-oriented">
<tbody>
<tr>
<td class="font gray uppercase">{{$t('clientId')}}</td>
<th>{{client.id}}</th>
</tr>
<tr>
<td class="font gray uppercase">{{$t('dated')}}</td>
<th>{{dated}}</th>
</tr>
</tbody>
</table>
</div>
</div>
<div class="size50">
<div class="panel">
<div class="header">{{$t('clientData')}}</div>
<div class="body">
<h3 class="uppercase">{{client.socialName}}</h3>
<div>
{{client.street}}
</div>
<div>
{{client.postcode}}, {{client.city}} ({{client.province}})
</div>
<div>
{{client.country}}
</div>
</div>
</div>
</div>
</div>
<table class="column-oriented">
<thead>
<tr>
<th>{{$t('date')}}</th>
<th>{{$t('concept')}}</th>
<th class="number">{{$t('invoiced')}}</th>
<th class="number">{{$t('payed')}}</th>
<th class="number">{{$t('balance')}}</th>
</tr>
</thead>
<tbody>
<tr v-for="sale in sales" :key="sale.id">
<td>{{sale.issued | date('%d-%m-%Y')}}</td>
<td>{{sale.ref}}</td>
<td class="number">{{sale.debtOut}}</td>
<td class="number">{{sale.debtIn}}</td>
<td class="number">{{getBalance(sale)}}</td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
<td></td>
<td class="number"><strong class="pull-left">Total</strong> {{getTotalDebtOut()}}</td>
<td class="number">{{getTotalDebtIn()}}</td>
<td class="number">{{totalBalance}}</td>
</tr>
</tfoot>
</table>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<report-footer id="pageFooter"
v-bind:left-text="$t('client', [client.id])"
v-bind:center-text="client.socialName"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,44 +1,57 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container" id="report">
<!-- Header component -->
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
<!-- End header component -->
<section class="main">
<!-- Report start -->
<section class="content">
<h1 class="title centered uppercase">{{$t('title')}}</h1>
<p class="centered">
Recibo de <strong class="uppercase">{{client.socialName}}</strong>,
la cantidad de <strong>{{receipt.amountPaid}} €</strong> en concepto de 'entrega a cuenta',
quedando pendiente en la cuenta del cliente
un saldo de <strong>{{receipt.amountUnpaid}} €</strong>.
</p>
<section class="signature">
<img v-bind:src="getReportSrc('signature.png')">
<p class="centered">{{$t('payed', [
'Silla',
receipt.payed.getDate(),
$t('months')[receipt.payed.getMonth()],
receipt.payed.getFullYear()])
}}
</p>
</section>
</section>
<!-- Report end -->
</section>
<!-- Footer component -->
<report-footer id="pageFooter"
v-bind:left-text="$t('client', [client.id])"
v-bind:center-text="client.socialName"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block">
<div class="content">
<h1 class="title centered uppercase">{{$t('title')}}</h1>
<p class="centered">
Recibo de <strong class="uppercase">{{client.socialName}}</strong>,
la cantidad de <strong>{{receipt.amountPaid}} €</strong> en concepto de 'entrega a cuenta',
quedando pendiente en la cuenta del cliente
un saldo de <strong>{{receipt.amountUnpaid}} €</strong>.
</p>
<div class="signature">
<img v-bind:src="getReportSrc('signature.png')">
<p class="centered">{{$t('payed', [
'Silla',
receipt.payed.getDate(),
$t('months')[receipt.payed.getMonth()],
receipt.payed.getFullYear()])
}}
</p>
</div>
</div>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<report-footer id="pageFooter"
v-bind:left-text="$t('client', [client.id])"
v-bind:center-text="client.socialName"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,8 +1,9 @@
const Stylesheet = require(`${appPath}/core/stylesheet`);
module.exports = new Stylesheet([
`${appPath}/common/css/spacing.css`,
`${appPath}/common/css/misc.css`,
`${appPath}/common/css/layout.css`,
`${appPath}/common/css/report.css`,
`${appPath}/common/css/misc.css`,
`${__dirname}/style.css`])
.mergeStyles();

View File

@ -1,160 +1,179 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container">
<!-- Header component -->
<report-header v-bind:locale="locale"></report-header>
<!-- End header component -->
<section class="main">
<h1 class="title centered">{{$t('title')}}</h1>
<section class="panel supplierPanel" style="width: 99%">
<section class="body">
<section class="vertical-text">
{{$t('supplier.toCompleteBySupplier')}}
</section>
<table class="row-oriented">
<tbody>
<tr>
<td>{{$t('supplier.orderReference')}}</td>
<th>{{supplier.mandateCode}}</th>
</tr>
<tr>
<td>{{$t('supplier.identifier')}}</td>
<th>ES89000B97367486</th>
</tr>
<tr>
<td>{{$t('supplier.name')}}</td>
<th>{{supplier.name}}</th>
</tr>
<tr>
<td>{{$t('supplier.street')}}</td>
<th>{{supplier.street}}</th>
</tr>
<tr>
<td>{{$t('supplier.location')}}</td>
<th>{{supplier.postCode}}, {{supplier.city}} ({{supplier.province}})</th>
</tr>
<tr>
<td>{{$t('supplier.country')}}</td>
<th>{{supplier.country}}</th>
</tr>
</tbody>
</table>
</section>
</section>
<p class="font small light-gray">{{$t('description')}}</p>
<p class="font small">
<strong>{{$t('documentCopy')}}</strong>
</p>
<section class="panel" style="width: 99%">
<section class="body">
<section class="vertical-text">
{{$t('client.toCompleteByClient')}}
</section>
<table class="row-oriented">
<tbody>
<tr>
<td>
{{$t('client.name')}}
<section class="description">{{$t('client.accountHolder')}}</section>
</td>
<th>{{client.socialName}}</th>
</tr>
<tr>
<td>{{$t('client.street')}}</td>
<th>{{client.street}}</th>
</tr>
<tr>
<td>{{$t('client.location')}}</td>
<th>{{client.postcode}}, {{client.city}} ({{client.province}})</th>
</tr>
<tr>
<td>{{$t('client.country')}}</td>
<th>{{client.country}}</th>
</tr>
<tr>
<td>{{$t('client.swift')}}</td>
<th>
<section class="field square">
<span v-for="i in 11"></span>
</section>
</th>
</tr>
<tr>
<td colspan="2">{{$t('client.accountNumber')}}</td>
</tr>
<tr>
<td colspan="2" v-if="!client.ibanLength">
<section class="field square">
<span>{{client.countryCode.substr(0, 1)}}</span>
<span>{{client.countryCode.substr(1, 1)}}</span>
<span class="wide"></span>
</section>
</td>
<td colspan="2" v-if="client.ibanLength">
<section class="field square">
<span>{{client.countryCode.substr(0, 1)}}</span>
<span>{{client.countryCode.substr(1, 1)}}</span>
<span v-for="i in client.ibanLength"></span>
</section>
</td>
</tr>
<tr>
<td class="description" colspan="2">
<section class="line">
<span>{{$t('client.accountNumberFormat')}}</span>
</section>
</td>
</tr>
<tr>
<td>{{$t('client.paymentType')}}</td>
<th>
<table class="payment-type">
<tr>
<td>
<section class="field square">
<span class="crossed">X</span>
</section>
</td>
<th>{{$t('client.recurrent')}}</th>
<th>O</th>
<td>
<section class="field square">
<span></span>
</section>
</td>
<th>{{$t('client.unique')}}</th>
</tr>
</table>
</th>
</tr>
<tr>
<td>{{$t('client.signLocation')}}</td>
<th>{{dated}}, {{supplier.province}}</th>
</tr>
<tr>
<td>{{$t('client.sign')}}</td>
<th></th>
</tr>
</tbody>
</table>
</section>
</section>
<p class="font small">{{$t('mandatoryFields')}}</p>
<p class="font small">{{$t('sendOrder')}}</p>
</section>
<!-- Footer component -->
<report-footer id="pageFooter"
v-bind:left-text="$t('order', [supplier.mandateCode])"
v-bind:center-text="client.socialName"
v-bind:locale="locale">
</report-footer>
<!-- End footer component -->
</section>
<table class="grid">
<tbody>
<tr>
<td>
<!-- Header block -->
<div class="grid-row">
<div class="grid-block">
<report-header
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-header>
</div>
</div>
<!-- Block -->
<div class="grid-row">
<div class="grid-block">
<h1 class="title centered">{{$t('title')}}</h1>
<div class="panel supplierPanel" style="width: 98%">
<div class="body">
<div class="vertical-text">
{{$t('supplier.toCompleteBySupplier')}}
</div>
<table class="row-oriented">
<tbody>
<tr>
<td>{{$t('supplier.orderReference')}}</td>
<th>{{supplier.mandateCode}}</th>
</tr>
<tr>
<td>{{$t('supplier.identifier')}}</td>
<th>ES89000B97367486</th>
</tr>
<tr>
<td>{{$t('supplier.name')}}</td>
<th>{{supplier.name}}</th>
</tr>
<tr>
<td>{{$t('supplier.street')}}</td>
<th>{{supplier.street}}</th>
</tr>
<tr>
<td>{{$t('supplier.location')}}</td>
<th>{{supplier.postCode}}, {{supplier.city}} ({{supplier.province}})</th>
</tr>
<tr>
<td>{{$t('supplier.country')}}</td>
<th>{{supplier.country}}</th>
</tr>
</tbody>
</table>
</div>
</div>
<p class="font small light-gray">{{$t('description')}}</p>
<p class="font small">
<strong>{{$t('documentCopy')}}</strong>
</p>
<div class="panel" style="width: 98%">
<div class="body">
<div class="vertical-text">
{{$t('client.toCompleteByClient')}}
</div>
<table class="row-oriented">
<tbody>
<tr>
<td>
{{$t('client.name')}}
<div class="description">{{$t('client.accountHolder')}}</div>
</td>
<th>{{client.socialName}}</th>
</tr>
<tr>
<td>{{$t('client.street')}}</td>
<th>{{client.street}}</th>
</tr>
<tr>
<td>{{$t('client.location')}}</td>
<th>{{client.postcode}}, {{client.city}} ({{client.province}})</th>
</tr>
<tr>
<td>{{$t('client.country')}}</td>
<th>{{client.country}}</th>
</tr>
<tr>
<td>{{$t('client.swift')}}</td>
<th>
<div class="field square">
<span v-for="i in 11"></span>
</div>
</th>
</tr>
<tr>
<td colspan="2">{{$t('client.accountNumber')}}</td>
</tr>
<tr>
<td colspan="2" v-if="!client.ibanLength">
<div class="field square">
<span>{{client.countryCode.substr(0, 1)}}</span>
<span>{{client.countryCode.substr(1, 1)}}</span>
<span class="wide"></span>
</div>
</td>
<td colspan="2" v-if="client.ibanLength">
<div class="field square">
<span>{{client.countryCode.substr(0, 1)}}</span>
<span>{{client.countryCode.substr(1, 1)}}</span>
<span v-for="i in client.ibanLength"></span>
</div>
</td>
</tr>
<tr>
<td class="description" colspan="2">
<div class="line">
<span>{{$t('client.accountNumberFormat')}}</span>
</div>
</td>
</tr>
<tr>
<td>{{$t('client.paymentType')}}</td>
<th>
<table class="payment-type">
<tr>
<td>
<div class="field square">
<span class="crossed">X</span>
</div>
</td>
<th>{{$t('client.recurrent')}}</th>
<th>O</th>
<td>
<div class="field square">
<span></span>
</div>
</td>
<th>{{$t('client.unique')}}</th>
</tr>
</table>
</th>
</tr>
<tr>
<td>{{$t('client.signLocation')}}</td>
<th>{{dated}}, {{supplier.province}}</th>
</tr>
<tr>
<td>{{$t('client.sign')}}</td>
<th></th>
</tr>
</tbody>
</table>
</div>
</div>
<p class="font small">{{$t('mandatoryFields')}}</p>
<p class="font small">{{$t('sendOrder')}}</p>
</div>
</div>
<!-- Footer block -->
<div class="grid-row">
<div class="grid-block">
<report-footer id="pageFooter"
v-bind:left-text="$t('order', [supplier.mandateCode])"
v-bind:center-text="client.socialName"
v-bind:is-preview="isPreview"
v-bind:locale="locale">
</report-footer>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -1,4 +1,4 @@
section .text {
div.text {
font-family: Tahoma;
font-weight: bold;
color: white;

View File

@ -1,15 +1,16 @@
<!DOCTYPE html>
<html v-bind:lang="locale">
<body>
<section class="container" id="report">
<section class="main">
<!-- Report start -->
<section class="text">{{zone.agencyName}}</section>
<section class="text">{{zone.id}}</section>
<section class="text">{{zone.plateNumber}} {{zone.time | date('%H:%M')}}</section>
<section></section>
<!-- Report end -->
</section>
</section>
<table class="grid">
<tbody>
<tr>
<td>
<div class="text">{{zone.agencyName}}</div>
<div class="text">{{zone.id}}</div>
<div class="text">{{zone.plateNumber}} {{zone.time | date('%H:%M')}}</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>