From 7986405a7276e4c5e05c08a55069d70ce5342113 Mon Sep 17 00:00:00 2001 From: Joan Sanchez Date: Mon, 4 Feb 2019 10:10:57 +0100 Subject: [PATCH] added sepa-core & letter-debtor --- modules/item/front/diary/index.js | 4 +- print/common/css/layout.css | 192 +++++---- print/common/css/misc.css | 10 +- print/config/routes.json | 1 + print/lib/reportEngine.js | 2 +- print/report/payment-update/index.js | 4 +- print/report/printer-setup/index.js | 10 +- .../report/report-footer/assets/css/style.css | 7 +- .../report/report-header/assets/css/style.css | 4 +- .../assets/css/style.css | 2 +- .../report/rpt-claim-pickup-order/index.html | 64 +-- .../rpt-letter-debtor/assets/css/style.css | 2 +- print/report/rpt-letter-debtor/index.html | 78 ++-- .../report/rpt-sepa-core/assets/css/style.css | 21 +- print/report/rpt-sepa-core/index.html | 371 ++++++------------ print/report/rpt-sepa-core/locale.js | 25 +- print/report/sepa-core/assets/css/index.js | 6 + print/report/sepa-core/assets/css/style.css | 40 ++ print/report/sepa-core/index.html | 29 ++ print/report/sepa-core/index.js | 48 +++ print/report/sepa-core/locale.js | 16 + 21 files changed, 524 insertions(+), 412 deletions(-) create mode 100644 print/report/sepa-core/assets/css/index.js create mode 100644 print/report/sepa-core/assets/css/style.css create mode 100644 print/report/sepa-core/index.html create mode 100755 print/report/sepa-core/index.js create mode 100644 print/report/sepa-core/locale.js diff --git a/modules/item/front/diary/index.js b/modules/item/front/diary/index.js index 09d3383fdf..6745ad94c9 100644 --- a/modules/item/front/diary/index.js +++ b/modules/item/front/diary/index.js @@ -147,8 +147,8 @@ class Controller { this.$scope.descriptor.ticketFk = sale.origin; this.$scope.descriptor.parent = event.target; this.$scope.descriptor.show(); + event.preventDefault(); - event.stopImmediatePropagation(); } showClientDescriptor(event, sale) { @@ -157,8 +157,8 @@ class Controller { this.$scope.clientDescriptor.clientFk = sale.clientFk; this.$scope.clientDescriptor.parent = event.target; this.$scope.clientDescriptor.show(); + event.preventDefault(); - event.stopImmediatePropagation(); } onDescriptorLoad() { diff --git a/print/common/css/layout.css b/print/common/css/layout.css index 2f2a4f7c9d..216d9fcaea 100644 --- a/print/common/css/layout.css +++ b/print/common/css/layout.css @@ -1,5 +1,5 @@ .container { - font-family: verdana, sans-serif; + font-family: arial, sans-serif; font-size: 16px; zoom: 0.55 } @@ -33,9 +33,18 @@ float: left } +.clearfix { + overflow: hidden; + display: block; + clear: both +} + .row { - white-space: nowrap; - margin-bottom: 15px + margin-bottom: 15px; + overflow: hidden; + display: block; + clear: both; + width: 100% } .row.small { @@ -52,13 +61,36 @@ box-sizing: border-box } +.row:last-child { + margin-bottom: 0 +} + +.row.inline .text { + display: table-cell; + margin-bottom: 0; + width: 30% +} + +.row.inline .control { + display: table-cell; + padding-left: 20px; + font-weight: bold; + color: #000; + width: 70% +} + +.row.inline .description { + position: static; + overflow: visible +} + .row .description { position: relative; padding-top: 2px; - overflow: hidden; font-size: 9px; + overflow: hidden; display: block; - color: #999 + clear: both } .row .line { @@ -78,42 +110,17 @@ float: left } -.row:last-child { - margin-bottom: 0 -} - -.row.inline .text { - display: inline-block; - margin-bottom: 0; - width: 40%; - -} - -.row.inline .control { - display: inline-block; - font-weight: bold; - padding-left: 20px; - color: #000; - width: 60% -} - -.row.inline .description { - position: static; - overflow: visible -} - .panel { position: relative } .panel .header { background-color: #FFF; - position:absolute; - left: 17.5px; - top: -12px; padding: 2.5px 5px; - + position: absolute; font-weight: bold; + left: 17.5px; + top: -12px } .panel .body { @@ -127,22 +134,27 @@ margin-top: 0 } -.box { - border-top: 1px solid #CCC; - border-right: 1px solid #CCC; +.field { border-bottom: 1px solid #CCC; - font-weight: bold; - text-align: center; - padding-top: 4px; - width: 25px; - height: 21px; - color: #000; + border-left: 1px solid #CCC; + border-top: 1px solid #CCC; float: left } -.box.crossed { - font-weight: 100; - font-size: 16px +.field span { + border-right: 1px solid #CCC; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: table-cell; + vertical-align: middle; + text-align: center; + font-weight: bold +} + +.field.square span { + height: 35.4px; + width: 35.4px } .pull-left { @@ -153,53 +165,89 @@ float: right } -.verticalText { +.vertical-text { -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); transform: rotate(90deg); position: absolute; text-align: center; font-size: .65em; + right: -108px; width: 200px; - border: 2px solid #000; - right: -110px; top: 50% } -vn-table { +table { border-collapse: collapse; - margin: 20px 0; - display: table; - width: 100%; + border-spacing: 0; } -vn-thead { +.row-oriented, .column-oriented { + text-align: left; + width: 100% +} + +.row-oriented .description, +.column-oriented .description { + font-size: 0.6em; + color: #888; + padding: 0 !important +} + +.row-oriented .description .line, +.column-oriented .description .line { + border-bottom: 1px solid #DDD; + border-right: 1px solid #DDD; + border-left: 1px solid #DDD; + margin-top: 10px; + color: #999; + padding: 5px +} + +.row-oriented .description span, +.column-oriented .description span { + background-color: #FFF; + margin: -5px 0 0 50px; + display: block; + padding: 5px; + float: left +} + +.column-oriented { + margin: 20px 0 +} + +.column-oriented tfoot { + border-top: 1px solid #808080; +} + +.column-oriented td, .column-oriented th { + padding: 5px 10px +} + +.column-oriented thead { + background-color: #c0c0c0 +} + +.column-oriented thead tr { border-bottom: 1px solid #808080; border-top: 1px solid #808080; - display: table-header-group + background-color: #c0c0c0 } -vn-tbody { - border-top: 3px solid #888888; - display: table-row-group +.column-oriented tfoot tr:first-child td { + padding-top: 20px !important; } -vn-tfoot { - border-top: 1px solid #808080; - display: table-footer-group +.panel .row-oriented td, .panel .row-oriented th { + padding: 10px 0 } -vn-tr { - display: table-row -} - -vn-th { - font-weight: bold +.row-oriented > tbody > tr > td { + width: 30% } -vn-td, vn-th { - vertical-align: middle; - display: table-cell; - text-align: left; - padding: 5px 0 -} +.row-oriented > tbody > tr > th { + padding-left: 30px; + width: 70% +} \ No newline at end of file diff --git a/print/common/css/misc.css b/print/common/css/misc.css index d1e7edf274..91af817b13 100644 --- a/print/common/css/misc.css +++ b/print/common/css/misc.css @@ -10,6 +10,14 @@ text-align: right } -.gray { +.font.gray { color: #555 +} + +.font.light-gray { + color: #888 +} + +.font.small { + font-size: 0.65em } \ No newline at end of file diff --git a/print/config/routes.json b/print/config/routes.json index 242557e515..bb3b39aa8e 100644 --- a/print/config/routes.json +++ b/print/config/routes.json @@ -5,6 +5,7 @@ {"type": "email", "name": "letter-debtor-st"}, {"type": "email", "name": "letter-debtor-nd"}, {"type": "email", "name": "claim-pickup-order"}, + {"type": "email", "name": "sepa-core"}, {"type": "report", "name": "delivery-note"}, {"type": "report", "name": "invoice"}, {"type": "report", "name": "rpt-claim-pickup-order"}, diff --git a/print/lib/reportEngine.js b/print/lib/reportEngine.js index 899893b7fb..0bdef6aa95 100644 --- a/print/lib/reportEngine.js +++ b/print/lib/reportEngine.js @@ -107,7 +107,7 @@ module.exports = { format: 'A4', border: '1.5cm', footer: { - height: '80px', + height: '60px', } }; diff --git a/print/report/payment-update/index.js b/print/report/payment-update/index.js index d5a51d2552..05c0bb64a3 100755 --- a/print/report/payment-update/index.js +++ b/print/report/payment-update/index.js @@ -13,7 +13,7 @@ module.exports = { if (!params.clientFk) throw new UserException('No client id specified'); - return this.methods.fetchClientData(params.clientFk) + return this.methods.fetchClient(params.clientFk) .then(([result]) => { if (!result) throw new UserException('No client data found'); @@ -24,7 +24,7 @@ module.exports = { this.$i18n.locale = this.locale; }, methods: { - fetchClientData(clientFk) { + fetchClient(clientFk) { return database.pool.query(` SELECT u.lang locale, diff --git a/print/report/printer-setup/index.js b/print/report/printer-setup/index.js index 5214bbb43b..aaf0a4d5d9 100755 --- a/print/report/printer-setup/index.js +++ b/print/report/printer-setup/index.js @@ -1,6 +1,4 @@ const database = require(`${appPath}/lib/database`); -const emailHeader = require('../email-header'); -const emailFooter = require('../email-footer'); const UserException = require(`${appPath}/lib/exceptions/userException`); module.exports = { @@ -13,7 +11,7 @@ module.exports = { if (!params.clientFk) throw new UserException('No client id specified'); - return this.methods.fetchClientData(params.clientFk) + return this.methods.fetchClient(params.clientFk) .then(([result]) => { if (!result) throw new UserException('No client data found'); @@ -29,7 +27,7 @@ module.exports = { }; }, methods: { - fetchClientData(clientFk) { + fetchClient(clientFk) { return database.pool.query(` SELECT c.id, @@ -47,7 +45,7 @@ module.exports = { }, }, components: { - 'email-header': emailHeader, - 'email-footer': emailFooter, + 'email-header': require('../email-header'), + 'email-footer': require('../email-footer'), }, }; diff --git a/print/report/report-footer/assets/css/style.css b/print/report/report-footer/assets/css/style.css index 5c44d3a6db..3422b3cc27 100644 --- a/print/report/report-footer/assets/css/style.css +++ b/print/report/report-footer/assets/css/style.css @@ -1,13 +1,12 @@ footer { font-family: verdana, sans-serif; - font-size: 12px; + font-size: 0.55em; color: #555; - zoom: 0.55 + zoom: 0.65 } footer, footer p { - text-align: center; - font-size: 12px + text-align: center } footer .page { diff --git a/print/report/report-header/assets/css/style.css b/print/report/report-header/assets/css/style.css index c152261de3..39525c1b59 100644 --- a/print/report/report-header/assets/css/style.css +++ b/print/report/report-header/assets/css/style.css @@ -3,11 +3,11 @@ header { padding-bottom: 10px; margin-bottom: 40px; text-align: center; - font-size: 12px; + font-size: 0.65em; color: #555 } header img { margin-bottom: 10px; width: 350px -} \ No newline at end of file +} diff --git a/print/report/rpt-claim-pickup-order/assets/css/style.css b/print/report/rpt-claim-pickup-order/assets/css/style.css index dcf1a56aea..21b89e27b6 100644 --- a/print/report/rpt-claim-pickup-order/assets/css/style.css +++ b/print/report/rpt-claim-pickup-order/assets/css/style.css @@ -9,7 +9,7 @@ font-size: 2em } -vn-table { +table.column-oriented { margin-top: 50px !important } diff --git a/print/report/rpt-claim-pickup-order/index.html b/print/report/rpt-claim-pickup-order/index.html index 9862260f2a..c5001c984c 100644 --- a/print/report/rpt-claim-pickup-order/index.html +++ b/print/report/rpt-claim-pickup-order/index.html @@ -8,18 +8,22 @@

{{$t('title')}}

-
-
{{$t('claimId')}}:
-
{{claimId}}
-
-
-
{{$t('clientId')}}:
-
{{clientId}}
-
-
-
{{$t('date')}}:
-
{{dated()}}
-
+ + + + + + + + + + + + + + + +
{{$t('claimId')}}{{claimId}}
{{$t('clientId')}}{{clientId}}
{{$t('date')}}{{dated()}}
@@ -41,24 +45,24 @@
- - - - {{$t('reference')}} - {{$t('quantity')}} - {{$t('claims')}} - {{$t('concept')}} - - - - - {{sale.id}} - {{sale.quantity}} - {{sale.claimQuantity}} - {{sale.concept}} - - - + + + + + + + + + + + + + + + + + +
{{$t('reference')}}{{$t('quantity')}}{{$t('claims')}}{{$t('concept')}}
{{sale.id}}{{sale.quantity}}{{sale.claimQuantity}}{{sale.concept}}
diff --git a/print/report/rpt-letter-debtor/assets/css/style.css b/print/report/rpt-letter-debtor/assets/css/style.css index ae9b314c0d..05dbab6521 100644 --- a/print/report/rpt-letter-debtor/assets/css/style.css +++ b/print/report/rpt-letter-debtor/assets/css/style.css @@ -9,6 +9,6 @@ font-size: 2em } -vn-table { +table.column-oriented { margin-top: 50px !important } \ No newline at end of file diff --git a/print/report/rpt-letter-debtor/index.html b/print/report/rpt-letter-debtor/index.html index e2458f2234..b65bfb97f2 100644 --- a/print/report/rpt-letter-debtor/index.html +++ b/print/report/rpt-letter-debtor/index.html @@ -8,14 +8,18 @@

{{$t('title')}}

-
-
{{$t('clientId')}}:
-
{{clientId}}
-
-
-
{{$t('date')}}:
-
{{dated()}}
-
+ + + + + + + + + + + +
{{$t('clientId')}}{{clientId}}
{{$t('date')}}{{dated()}}
@@ -37,35 +41,35 @@
- - - - {{$t('date')}} - {{$t('concept')}} - {{$t('invoiced')}} - {{$t('payed')}} - {{$t('balance')}} - - - - - {{toISOString(sale.issued)}} - {{sale.ref}} - {{sale.debtOut}} - {{sale.debtIn}} - {{getBalance(sale)}} - - - - - - Total - {{getTotalDebtOut()}} - {{getTotalDebtIn()}} - {{totalBalance}} - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('date')}}{{$t('concept')}}{{$t('invoiced')}}{{$t('payed')}}{{$t('balance')}}
{{toISOString(sale.issued)}}{{sale.ref}}{{sale.debtOut}}{{sale.debtIn}}{{getBalance(sale)}}
Total {{getTotalDebtOut()}}{{getTotalDebtIn()}}{{totalBalance}}
+

{{$t('title')}}

-
{{$t('supplier.toCompleteBySupplier')}}
-
-
{{$t('supplier.orderReference')}}
-
{{mandateCode}}
-
-
-
{{$t('supplier.identifier')}}
-
ES89000B97367486
-
-
-
{{$t('supplier.name')}}
-
{{supplierName}}
-
-
-
{{$t('supplier.street')}}
-
{{supplierStreet}}
-
-
-
{{$t('supplier.location')}}
-
{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
-
-
-
{{$t('supplier.country')}}
-
{{supplierCountry}}
+
+ {{$t('supplier.toCompleteBySupplier')}}
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('supplier.orderReference')}}{{mandateCode}} +
{{$t('supplier.identifier')}}ES89000B97367486
{{$t('supplier.name')}}{{supplierName}}
{{$t('supplier.street')}}{{supplierStreet}}
{{$t('supplier.location')}}{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
{{$t('supplier.country')}}{{supplierCountry}}
-
+

{{$t('description')}}

+

+ {{$t('documentCopy')}} +

+ +
-
{{$t('supplier.toCompleteBySupplier')}}
-
-
{{$t('supplier.orderReference')}}
-
{{mandateCode}}
+
+ {{$t('client.toCompleteByClient')}}
-
-
{{$t('supplier.identifier')}}
-
ES89000B97367486
-
-
-
{{$t('supplier.name')}}
-
{{supplierName}}
-
-
-
{{$t('supplier.street')}}
-
{{supplierStreet}}
-
-
-
{{$t('supplier.location')}}
-
{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
-
-
-
{{$t('supplier.country')}}
-
{{supplierCountry}}
-
-
-
-
-
-
{{$t('supplier.toCompleteBySupplier')}}
-
-
{{$t('supplier.orderReference')}}
-
{{mandateCode}}
-
-
-
{{$t('supplier.identifier')}}
-
ES89000B97367486
-
-
-
{{$t('supplier.name')}}
-
{{supplierName}}
-
-
-
{{$t('supplier.street')}}
-
{{supplierStreet}}
-
-
-
{{$t('supplier.location')}}
-
{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
-
-
-
{{$t('supplier.country')}}
-
{{supplierCountry}}
-
-
-
- - -
-
-
{{$t('supplier.toCompleteBySupplier')}}
-
-
{{$t('supplier.orderReference')}}
-
{{mandateCode}}
-
-
-
{{$t('supplier.identifier')}}
-
ES89000B97367486
-
-
-
{{$t('supplier.name')}}
-
{{supplierName}}
-
-
-
{{$t('supplier.street')}}
-
{{supplierStreet}}
-
-
-
{{$t('supplier.location')}}
-
{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
-
-
-
{{$t('supplier.country')}}
-
{{supplierCountry}}
-
-
-
- -
-
-
{{$t('supplier.toCompleteBySupplier')}}
-
-
{{$t('supplier.orderReference')}}
-
{{mandateCode}}
-
-
-
{{$t('supplier.identifier')}}
-
ES89000B97367486
-
-
-
{{$t('supplier.name')}}
-
{{supplierName}}
-
-
-
{{$t('supplier.street')}}
-
{{supplierStreet}}
-
-
-
{{$t('supplier.location')}}
-
{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
-
-
-
{{$t('supplier.country')}}
-
{{supplierCountry}}
-
-
-
- - -
-
-
{{$t('supplier.toCompleteBySupplier')}}
-
-
{{$t('supplier.orderReference')}}
-
{{mandateCode}}
-
-
-
{{$t('supplier.identifier')}}
-
ES89000B97367486
-
-
-
{{$t('supplier.name')}}
-
{{supplierName}}
-
-
-
{{$t('supplier.street')}}
-
{{supplierStreet}}
-
-
-
{{$t('supplier.location')}}
-
{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
-
-
-
{{$t('supplier.country')}}
-
{{supplierCountry}}
-
-
-
- - + + + + {{$t('client.accountNumber')}} + + + +
+ E + S + +
+ + + + +
+ {{$t('client.accountNumberFormat')}} +
+ + + + {{$t('client.paymentType')}} + + + + + + + + + +
+
+ X +
+
{{$t('client.recurrent')}}O +
+ +
+
{{$t('client.unique')}}
+ + + + {{$t('client.signLocation')}} + {{dated()}}, {{supplierProvince}} + + + {{$t('client.sign')}} + + + + +
+
+ +

{{$t('mandatoryFields')}}

+

{{$t('sendOrder')}}

diff --git a/print/report/rpt-sepa-core/locale.js b/print/report/rpt-sepa-core/locale.js index e95265a26e..c5b5f7519c 100644 --- a/print/report/rpt-sepa-core/locale.js +++ b/print/report/rpt-sepa-core/locale.js @@ -2,6 +2,15 @@ module.exports = { messages: { es: { title: 'Orden de domiciliación de adeudo SEPA CORE', + description: `Mediante la firma de esta orden de domiciliación, el deudor autoriza (A) al acreedor a enviar instrucciones + a la entidad del deudor para adeudar su cuenta y (B) a la entidad para efectuar los adeudos en su cuenta siguiendo las + instrucciones del acreedor.Como parte de sus derechos, el deudor está legitimado al reembolso por su entidad en los + términos y condiciones del contrato suscrito con la misma. La solicitud de reembolso deberá efectuarse dentro de las + ocho semanas que adeudo en cuenta. Puede obtener información adicional sobre sus derechos en su entidad financiera.`, + documentCopy: `Debe llevar a su Entidad Bancaria una copia + del documento firmado para que lo registre y evitar la devolución.`, + mandatoryFields: `TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE.`, + sendOrder: `UNA VEZ FIRMADA ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA Y ES RECOMENDABLE FACILITAR UNA COPIA A SU ENTIDAD BANCARIA.`, supplier: { toCompleteBySupplier: 'A cumplimentar por el acreedor', orderReference: 'Referencia de la orden de domiciliación', @@ -9,11 +18,25 @@ module.exports = { name: 'Nombre del acreedor', street: 'Dirección', location: 'CP - Población - Provincia', - country: 'País', + country: 'País' }, client: { toCompleteByClient: 'A cumplimentar por el deudor', + name: 'Nombre del deudor/es', + street: 'Dirección del deudor', + location: 'CP - Población - Provincia', + country: 'País del deudor', + swift: 'Swift BIC', + accountNumber: 'Número de cuenta - IBAN', + accountHolder: '(Titular/es de la cuenta de cargo)', + accountNumberFormat: 'En España el IBAN consta de 24 posiciones comenzando siempre por ES', + paymentType: 'Tipo de pago', + recurrent: 'Recurrente', + unique: 'Único', + signLocation: 'Fecha - Localidad', + sign: 'Firma del deudor y sello', }, + order: 'Ord. domiciliación {0}', }, }, }; diff --git a/print/report/sepa-core/assets/css/index.js b/print/report/sepa-core/assets/css/index.js new file mode 100644 index 0000000000..c1943eee16 --- /dev/null +++ b/print/report/sepa-core/assets/css/index.js @@ -0,0 +1,6 @@ +const CssReader = require(`${appPath}/lib/cssReader`); + +module.exports = new CssReader([ + `${appPath}/common/css/layout.css`, + `${__dirname}/style.css`]) + .mergeStyles(); diff --git a/print/report/sepa-core/assets/css/style.css b/print/report/sepa-core/assets/css/style.css new file mode 100644 index 0000000000..a197ee5cdf --- /dev/null +++ b/print/report/sepa-core/assets/css/style.css @@ -0,0 +1,40 @@ +body { + background-color: #EEE +} + +.container { + max-width: 600px; + min-width: 320px; + margin: 0 auto; + color: #555 +} + +.main { + background-color: #FFF; + padding: 20px +} + +.main a { + color: #8dba25 +} + +.main h1 { + color: #999 +} + +.main h3 { + font-size: 16px +} + +.title { + background-color: #95d831; + text-transform: uppercase; + text-align: center; + padding: 35px 0 +} + +.title h1 { + font-size: 32px; + color: #333; + margin: 0 +} \ No newline at end of file diff --git a/print/report/sepa-core/index.html b/print/report/sepa-core/index.html new file mode 100644 index 0000000000..6c13557083 --- /dev/null +++ b/print/report/sepa-core/index.html @@ -0,0 +1,29 @@ + + + + {{ $t('subject') }} + + +
+ + + + +
+ +
+

{{ $t('title') }}

+
+ + +

{{$t('description.dear')}},

+

{{$t('description.instructions')}}

+

{{$t('description.conclusion')}}

+ +
+ + + +
+ + \ No newline at end of file diff --git a/print/report/sepa-core/index.js b/print/report/sepa-core/index.js new file mode 100755 index 0000000000..3a281ec328 --- /dev/null +++ b/print/report/sepa-core/index.js @@ -0,0 +1,48 @@ +const database = require(`${appPath}/lib/database`); +const reportEngine = require(`${appPath}/lib/reportEngine.js`); +const UserException = require(`${appPath}/lib/exceptions/userException`); + +module.exports = { + name: 'sepa-core', + async asyncData(ctx, params) { + const promises = []; + const data = { + isPreview: ctx.method === 'GET', + }; + + if (!params.clientFk) + throw new UserException('No client id specified'); + + promises.push(reportEngine.toPdf('rpt-sepa-core', ctx)); + promises.push(this.methods.fetchClient(params.clientFk)); + + return Promise.all(promises).then(result => { + const stream = result[0]; + const [[client]] = result[1]; + + Object.assign(data, client); + Object.assign(data, {attachments: [{filename: 'rpt-sepa-core.pdf', content: stream}]}); + + return data; + }); + }, + created() { + this.$i18n.locale = this.locale; + }, + + methods: { + fetchClient(clientFk) { + return database.pool.query(` + SELECT + u.lang locale, + c.email recipient + FROM client c + JOIN account.user u ON u.id = c.id + WHERE c.id = ?`, [clientFk]); + }, + }, + components: { + 'email-header': require('../email-header'), + 'email-footer': require('../email-footer'), + }, +}; diff --git a/print/report/sepa-core/locale.js b/print/report/sepa-core/locale.js new file mode 100644 index 0000000000..0eea8d9f38 --- /dev/null +++ b/print/report/sepa-core/locale.js @@ -0,0 +1,16 @@ +module.exports = { + messages: { + es: { + subject: 'Solicitud de domiciliación bancaria', + title: 'Domiciliación SEPA CORE', + description: { + dear: 'Estimado cliente', + instructions: `Para poder tramitar tu solicitud de cambio de tu forma de pago a giro bancario, + te adjuntamos los documentos correspondientes a la ley de pago, que tienes que cumplimentar y enviarnos.`, + conclusion: 'Gracias por tu atención.' + }, + }, + }, +}; + +