diff --git a/db/changes/10004-mother/00-mandateType.sql b/db/changes/10004-mother/00-mandateType.sql new file mode 100644 index 000000000..9b16e93d7 --- /dev/null +++ b/db/changes/10004-mother/00-mandateType.sql @@ -0,0 +1 @@ +UPDATE `vn2008`.`mandato_tipo` SET `Nombre`='LCR' WHERE `idmandato_tipo`='3'; diff --git a/db/changes/10004-mother/00-sample.sql b/db/changes/10004-mother/00-sample.sql new file mode 100644 index 000000000..4c0453705 --- /dev/null +++ b/db/changes/10004-mother/00-sample.sql @@ -0,0 +1,4 @@ + +INSERT INTO `vn`.`sample`(`id`, `code`, `description`, `isVisible`, `hasCompany`) + VALUES + (17, 'client-lcr', 'Autorisation pour débit', 1, 1); \ No newline at end of file diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 0f644bf7f..3bc22a931 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -523,7 +523,8 @@ INSERT INTO `vn`.`greuge`(`id`, `clientFk`, `description`, `amount`, `shipped`, INSERT INTO `vn`.`mandateType`(`id`, `name`) VALUES (1, 'B2B'), - (2, 'CORE'); + (2, 'CORE'), + (3, 'LCR'); INSERT INTO `vn`.`mandate`(`id`, `clientFk`, `companyFk`, `code`, `created`, `mandateTypeFk`) VALUES diff --git a/modules/client/back/models/client-sample.js b/modules/client/back/models/client-sample.js index b36d27f84..c7cda2412 100644 --- a/modules/client/back/models/client-sample.js +++ b/modules/client/back/models/client-sample.js @@ -14,10 +14,19 @@ module.exports = Self => { if (sample.hasCompany && !changes.companyFk) throw new UserError('Choose a company'); + const mandateSamples = [ + {sample: 'sepa-core', type: 'CORE'}, + {sample: 'client-lcr', type: 'LCR'} + ]; + + const mandate = mandateSamples.find(mandate => { + return mandate.sample === sample.code; + }); + // Renew mandate - if (sample.code === 'sepa-core') { + if (mandate) { let mandateType = await models.MandateType.findOne({ - where: {name: 'CORE'} + where: {name: mandate.type} }); let oldMandate = await models.Mandate.findOne({ diff --git a/print/config/routes.json b/print/config/routes.json index 6e287131f..f4a620ffe 100644 --- a/print/config/routes.json +++ b/print/config/routes.json @@ -6,6 +6,7 @@ {"type": "email", "name": "letter-debtor-nd"}, {"type": "email", "name": "claim-pickup-order"}, {"type": "email", "name": "sepa-core"}, + {"type": "email", "name": "client-lcr"}, {"type": "email", "name": "driver-route"}, {"type": "report", "name": "rpt-delivery-note"}, {"type": "report", "name": "rpt-claim-pickup-order"}, diff --git a/print/report/client-lcr/assets/css/index.js b/print/report/client-lcr/assets/css/index.js new file mode 100644 index 000000000..321c632dc --- /dev/null +++ b/print/report/client-lcr/assets/css/index.js @@ -0,0 +1,7 @@ +const CssReader = require(`${appPath}/lib/cssReader`); + +module.exports = new CssReader([ + `${appPath}/common/css/layout.css`, + `${appPath}/common/css/email.css`, + `${appPath}/common/css/misc.css`]) + .mergeStyles(); diff --git a/print/report/client-lcr/index.html b/print/report/client-lcr/index.html new file mode 100644 index 000000000..91fa67ab5 --- /dev/null +++ b/print/report/client-lcr/index.html @@ -0,0 +1,27 @@ + + + + {{ $t('subject') }} + + +
+ + + +
+ +
+

{{ $t('title') }}

+
+ + +

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

+

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

+

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

+
+ + + +
+ + \ No newline at end of file diff --git a/print/report/client-lcr/index.js b/print/report/client-lcr/index.js new file mode 100755 index 000000000..bb7ba452d --- /dev/null +++ b/print/report/client-lcr/index.js @@ -0,0 +1,49 @@ +const database = require(`${appPath}/lib/database`); +const reportEngine = require(`${appPath}/lib/reportEngine.js`); +const UserException = require(`${appPath}/lib/exceptions/userException`); + +module.exports = { + name: 'client-lcr', + 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-lcr', 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-lcr.pdf', content: stream}]}); + + return data; + }); + }, + created() { + if (this.locale) + 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/client-lcr/locale.js b/print/report/client-lcr/locale.js new file mode 100644 index 000000000..85a75d778 --- /dev/null +++ b/print/report/client-lcr/locale.js @@ -0,0 +1,64 @@ +module.exports = { + messages: { + es: { + subject: 'Autorisation pour débit', + title: 'Autorisation pour débit', + description: { + dear: 'Messieurs', + instructions: `Étant donné les excellentes relations existantes entre nos + deux sociétés et en vue de faciliter les processus de + paiement de nos factures, nous vous suggérons l'utilisation + du système française de compensation LCR. + Ce service consiste à effectuer des recouvrements + automatiques, de manière électronique, de nos effets - + lettres de change et billets à ordre - tirés sur votre société + en Euro, qui présente comme principal avantage pour vous + la substantielle réduction de coûts dans des termes de frais + et commissions bancaires. + Dans le cas où vous accepteriez notre proposition, à + l’échéance de chaque effet, votre compte sera débité + automatiquement par votre Banque. + Ainsi, nous vous demandons de signer et envoyer à votre + Banque l'original de l'autorisation pour débit en annexe, + dûment remplie, et de nous retourner une photocopie de la + dite autorisation. + Ce système étant basé sur la transmission de données de + manière électronique, le maniement de documents + physiques á été éliminé + En vous remercieront pour votre collaboration, nous vous + prions d’agréer, Messieurs, nos salutations distinguées.`, + conclusion: 'Bien cordialement' + }, + }, + fr: { + subject: 'Autorisation pour débit', + title: 'Autorisation pour débit', + description: { + dear: 'Messieurs', + instructions: `Étant donné les excellentes relations existantes entre nos + deux sociétés et en vue de faciliter les processus de + paiement de nos factures, nous vous suggérons l'utilisation + du système française de compensation LCR. + Ce service consiste à effectuer des recouvrements + automatiques, de manière électronique, de nos effets - + lettres de change et billets à ordre - tirés sur votre société + en Euro, qui présente comme principal avantage pour vous + la substantielle réduction de coûts dans des termes de frais + et commissions bancaires. + Dans le cas où vous accepteriez notre proposition, à + l’échéance de chaque effet, votre compte sera débité + automatiquement par votre Banque. + Ainsi, nous vous demandons de signer et envoyer à votre + Banque l'original de l'autorisation pour débit en annexe, + dûment remplie, et de nous retourner une photocopie de la + dite autorisation. + Ce système étant basé sur la transmission de données de + manière électronique, le maniement de documents + physiques á été éliminé + En vous remercieront pour votre collaboration, nous vous + prions d’agréer, Messieurs, nos salutations distinguées.`, + conclusion: 'Bien cordialement' + }, + }, + }, +};