Merge pull request 'fix: refs#7748 solicitud de domiciliación bancaria' (!2752) from 7748-Modificar-solicitud-de-domiciliación-bancaria into master
gitea/salix/pipeline/head This commit looks good Details

Reviewed-on: #2752
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
This commit is contained in:
Carlos Andrés 2024-07-19 09:43:15 +00:00
commit d4bbd3530c
7 changed files with 98 additions and 64 deletions

View File

@ -0,0 +1,16 @@
subject: Bank Direct Debit Request
title: SEPA CORE Direct Debit
description:
dear: Dear Customer
instructions: <p>Given the excellent relationship between our two companies
and to facilitate the payment processes of our invoices, we suggest the use
of the SEPA CORE direct debit system.</p>
<p>This service involves issuing our receipts to your company in an automated
and electronic manner, which represents a substantial reduction in costs for you
in terms of fees and bank charges.</p>
<p>If you accept our proposal, on the due date of each payment, it will be automatically
debited from your account through your bank.</p>
<p>This system is based on the electronic transmission of data; the handling of
physical documents has been eliminated.</p>
<p>We appreciate your cooperation,</p>
conclusion: Thank you for your attention!

View File

@ -9,9 +9,7 @@ description:
forma automatizada y electrónicamente, lo que supone para usted una reducción forma automatizada y electrónicamente, lo que supone para usted una reducción
sustancial de costos en términos de honorarios y gastos bancarios.</p> sustancial de costos en términos de honorarios y gastos bancarios.</p>
<p>En caso de que acepte nuestra propuesta, a la fecha de vencimiento de cada efecto, <p>En caso de que acepte nuestra propuesta, a la fecha de vencimiento de cada efecto,
se debitará a su cuenta automáticamente a través de su entidad bancaria. se debitará a su cuenta automáticamente a través de su entidad bancaria.</p>
Por tanto, le pedimos que firme y envíe a su banco la autorización original adjunta,
debidamente cumplimentada, y nos devuelva una fotocopia de dicha autorización.</p>
<p>Este sistema se basa en la transmisión electrónica de datos; <p>Este sistema se basa en la transmisión electrónica de datos;
el manejo de documentos físicos ha sido eliminado.</p> el manejo de documentos físicos ha sido eliminado.</p>
<p>Le agradecemos su cooperación,</p> <p>Le agradecemos su cooperación,</p>

View File

@ -14,11 +14,7 @@ description:
et commissions bancaires.</p> et commissions bancaires.</p>
<p>Dans le cas où vous accepteriez notre proposition, à <p>Dans le cas où vous accepteriez notre proposition, à
léchéance de chaque effet, votre compte sera débité léchéance de chaque effet, votre compte sera débité
automatiquement par votre Banque. automatiquement par votre Banque.</p>
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.</p>
<p>Ce système étant basé sur la transmission de données de <p>Ce système étant basé sur la transmission de données de
manière électronique, le maniement de documents manière électronique, le maniement de documents
physiques á été éliminé</p> physiques á été éliminé</p>

View File

@ -0,0 +1,46 @@
reportName: direct-debit-order
title: SEPA CORE Direct Debit Order
description: By signing this direct debit order, the debtor authorizes (A) the creditor
to send instructions to the debtor's bank to debit their account and (B) the bank to debit
their account according to the creditor's instructions. As part of their rights,
the debtor is entitled to a refund by their bank under the terms and conditions
of the contract signed with the bank. The refund request must be made within
eight weeks of the debit. You can obtain additional information about your rights
from your financial institution.
documentCopy: You must take a signed copy of this document to your Bank for registration to avoid returns.
mandatoryFields: ALL FIELDS MUST BE COMPLETED.
sendOrder: ONCE THIS DIRECT DEBIT ORDER IS SIGNED, IT MUST BE SENT TO THE CREDITOR
FOR SAFEGUARDING AND IT IS RECOMMENDED TO PROVIDE A COPY TO YOUR BANK.
supplier:
toCompleteBySupplier: To be completed by the creditor
orderReference: Direct debit order reference
identifier: Creditor identifier
name: Creditor's name
street: Address
location: Postal Code - City - Province
country: Country
client:
toCompleteByClient: To be completed by the debtor
name: Debtor's name(s)
fiscalId: NIF
street: Debtor's address
location: Postal Code - City - Province
country: Debtor's country
swift: Swift BIC
accountNumber: IBAN
accountHolder: "(Account holder(s))"
accountNumberFormat: In {0}, the IBAN consists of {1} characters always starting with {2}
paymentType: Payment type
recurrent: Recurrent
unique: Unique
signLocation: Date - City
sign: Debtor's signature and stamp
order: Direct Debit Order {0}
Francia: France
España: Spain
Portugal: Portugal
instructions:
title: Instructions
accountFields: Fill in the fields related to the bank account
signDocument: Sign and stamp the document. For it to be valid, the stamp must show the CIF/NIF. If not, the request must be accompanied by an account ownership certificate.
thanks: Thank you for your cooperation!

View File

@ -1,13 +1,12 @@
const vnReport = require('../../../core/mixins/vn-report.js'); const vnReport = require('../../../core/mixins/vn-report.js');
const db = require('../../../core/database');
module.exports = { module.exports = {
name: 'sepa-core', name: 'sepa-core',
mixins: [vnReport], mixins: [vnReport],
async serverPrefetch() { async serverPrefetch() {
this.client = await this.findOneFromDef('client', [this.companyId, this.companyId, this.id]); this.client = await this.findOneFromDef('client', [this.id]);
this.checkMainEntity(this.client); this.checkMainEntity(this.client);
const suppliers = await this.rawSqlFromDef('supplier', [this.companyId, this.companyId, this.id]); const suppliers = await this.rawSqlFromDef('supplier', [this.companyId, this.id]);
this.supplier = { this.supplier = {
...suppliers[0], ...suppliers[0],
accountDetailValue: suppliers.map(val => val?.accountDetailValue) accountDetailValue: suppliers.map(val => val?.accountDetailValue)
@ -23,16 +22,5 @@ module.exports = {
type: Number, type: Number,
required: true required: true
} }
},
methods: {
getSupplierCif() {
return db.findOne(`
SELECT DISTINCT ad.value
FROM supplierAccount sa
JOIN accountDetail ad ON ad.supplierAccountFk = sa.id
JOIN accountDetailType adt ON adt.id = ad.accountDetailTypeFk AND adt.id = 3
WHERE sa.supplierFk = ?`) [this.companyId];
} }
}
}; };

View File

@ -1,19 +1,14 @@
SELECT SELECT c.id,
c.id,
m.code mandateCode,
c.socialName, c.socialName,
c.street, c.street,
c.postcode, c.postcode,
c.city, c.city,
c.fi, c.fi,
p.name AS province, p.name province,
ct.name country, ct.name country,
ct.code AS countryCode, ct.code countryCode,
ct.ibanLength AS ibanLength ct.ibanLength ibanLength
FROM client c FROM client c
JOIN country ct ON ct.id = c.countryFk JOIN country ct ON ct.id = c.countryFk
LEFT JOIN mandate m ON m.clientFk = c.id JOIN province p ON p.id = c.provinceFk
AND m.companyFk = ? AND m.finished IS NULL WHERE c.id = ?
LEFT JOIN province p ON p.id = c.provinceFk
WHERE (m.companyFk = ? OR m.companyFk IS NULL) AND c.id = ?
ORDER BY m.created DESC LIMIT 1

View File

@ -1,29 +1,24 @@
SELECT SELECT m.code mandateCode,
m.code mandateCode,
s.name, s.name,
s.street, s.street,
sc.name country, sc.name country,
s.postCode, s.postCode,
s.city, s.city,
sp.name province, sp.name province,
s.nif,
sa.supplierFk,
be.name bankName,
ad.value accountDetailValue ad.value accountDetailValue
FROM FROM client c
client c JOIN mandate m ON m.clientFk = c.id
LEFT JOIN mandate m ON m.clientFk = c.id AND m.companyFk = ? AND m.finished IS NULL JOIN mandateType mt ON mt.id = m.mandateTypeFk
LEFT JOIN supplier s ON s.id = m.companyFk JOIN supplier s ON s.id = m.companyFk
LEFT JOIN country sc ON sc.id = s.countryFk LEFT JOIN country sc ON sc.id = s.countryFk
LEFT JOIN province sp ON sp.id = s.provinceFk LEFT JOIN province sp ON sp.id = s.provinceFk
LEFT JOIN province p ON p.id = c.provinceFk JOIN supplierAccount sa ON sa.supplierFk = s.id
LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id JOIN accountDetail ad ON ad.supplierAccountFk = sa.id
LEFT JOIN bankEntity be ON sa.bankEntityFk = be.id JOIN accountDetailType adt ON adt.id = ad.accountDetailTypeFk
LEFT JOIN accountDetail ad ON ad.supplierAccountFk = sa.id WHERE m.companyFk = ?
JOIN accountDetailType adt ON adt.id = ad.accountDetailTypeFk AND adt.id = 3 AND m.finished IS NULL
WHERE AND c.id = ?
(m.companyFk = ? OR m.companyFk IS NULL) AND mt.name = 'CORE'
AND (c.id = ? OR (c.id IS NULL AND c.countryFk = sa.countryFk)) AND adt.description = 'Referencia Remesas'
GROUP BY ad.value GROUP BY m.id, ad.value
ORDER BY ORDER BY m.created DESC
m.created DESC;