mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
Merge pull request #20 from hbrunn/6.1-sepa_direct_debit
[ADD] backport sepa direct debit
This commit is contained in:
@@ -465,30 +465,6 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Insert payment_mode.type -->
|
||||
<record id="view_payment_mode_form_inherit" model="ir.ui.view">
|
||||
<field name="name">payment.mode.form.inherit</field>
|
||||
<field name="model">payment.mode</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_mode_form"/>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="type"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_payment_mode_tree_inherit" model="ir.ui.view">
|
||||
<field name="name">payment.mode.tree.inherit</field>
|
||||
<field name="model">payment.mode</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_mode_tree"/>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="type"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- basic view for payment mode type -->
|
||||
<record model="ir.ui.view" id="view_payment_mode_type_form">
|
||||
<field name="name">view.payment.mode.type.form</field>
|
||||
|
||||
26
account_banking_pain_base/__init__.py
Normal file
26
account_banking_pain_base/__init__.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# PAIN Base module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from . import payment_line
|
||||
from . import payment_mode
|
||||
from . import company
|
||||
from . import banking_export_pain
|
||||
51
account_banking_pain_base/__openerp__.py
Normal file
51
account_banking_pain_base/__openerp__.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# PAIN base module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
'name': 'Account Banking PAIN Base Module',
|
||||
'summary': 'Base module for PAIN file generation',
|
||||
'version': '0.1',
|
||||
'license': 'AGPL-3',
|
||||
'author': 'Akretion, Noviat',
|
||||
'website': 'http://openerp-community-association.org/',
|
||||
'category': 'Hidden',
|
||||
'depends': ['account_banking_payment_export'],
|
||||
'external_dependencies': {
|
||||
'python': ['unidecode', 'lxml'],
|
||||
},
|
||||
'data': [
|
||||
'payment_line_view.xml',
|
||||
'payment_mode_view.xml',
|
||||
'company_view.xml',
|
||||
],
|
||||
'description': '''
|
||||
Base module for PAIN file generation
|
||||
====================================
|
||||
|
||||
This module contains fields and functions that are used by the module for SEPA Credit Transfer (account_banking_sepa_credit_transfer) and SEPA Direct Debit (account_banking_sepa_direct_debit). This module doesn't provide any functionnality by itself.
|
||||
|
||||
This module is part of the banking addons: https://launchpad.net/banking-addons
|
||||
|
||||
This module was started during the Akretion-Noviat code sprint of November 21st 2013 in Epiais les Louvres (France).
|
||||
''',
|
||||
'active': False,
|
||||
'installable': True,
|
||||
}
|
||||
439
account_banking_pain_base/banking_export_pain.py
Normal file
439
account_banking_pain_base/banking_export_pain.py
Normal file
@@ -0,0 +1,439 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# PAIN Base module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm
|
||||
from openerp.tools.translate import _
|
||||
from openerp.tools.safe_eval import safe_eval
|
||||
from datetime import datetime
|
||||
from lxml import etree
|
||||
from openerp import tools
|
||||
import logging
|
||||
import base64
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class banking_export_pain(orm.AbstractModel):
|
||||
_name = 'banking.export.pain'
|
||||
|
||||
def _validate_iban(self, cr, uid, iban, context=None):
|
||||
'''if IBAN is valid, returns IBAN
|
||||
if IBAN is NOT valid, raises an error message'''
|
||||
partner_bank_obj = self.pool.get('res.partner.bank')
|
||||
if partner_bank_obj.is_iban_valid(cr, uid, iban, context=context):
|
||||
return iban.replace(' ', '')
|
||||
else:
|
||||
raise orm.except_orm(
|
||||
_('Error:'), _("This IBAN is not valid : %s") % iban)
|
||||
|
||||
def _prepare_field(
|
||||
self, cr, uid, field_name, field_value, eval_ctx, max_size=0,
|
||||
gen_args=None, context=None):
|
||||
'''This function is designed to be inherited !'''
|
||||
from unidecode import unidecode
|
||||
if gen_args is None:
|
||||
gen_args = {}
|
||||
assert isinstance(eval_ctx, dict), 'eval_ctx must contain a dict'
|
||||
try:
|
||||
value = safe_eval(field_value, eval_ctx)
|
||||
# SEPA uses XML ; XML = UTF-8 ; UTF-8 = support for all characters
|
||||
# But we are dealing with banks...
|
||||
# and many banks don't want non-ASCCI characters !
|
||||
# cf section 1.4 "Character set" of the SEPA Credit Transfer
|
||||
# Scheme Customer-to-bank guidelines
|
||||
if gen_args.get('convert_to_ascii'):
|
||||
value = unidecode(value)
|
||||
unallowed_ascii_chars = [
|
||||
'"', '#', '$', '%', '&', '*', ';', '<', '>', '=', '@',
|
||||
'[', ']', '^', '_', '`', '{', '}', '|', '~', '\\', '!']
|
||||
for unallowed_ascii_char in unallowed_ascii_chars:
|
||||
value = value.replace(unallowed_ascii_char, '-')
|
||||
except:
|
||||
line = eval_ctx.get('line')
|
||||
if line:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("Cannot compute the '%s' of the Payment Line with "
|
||||
"reference '%s'.")
|
||||
% (field_name, line.name))
|
||||
else:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("Cannot compute the '%s'.") % field_name)
|
||||
if not isinstance(value, (str, unicode)):
|
||||
raise orm.except_orm(
|
||||
_('Field type error:'),
|
||||
_("The type of the field '%s' is %s. It should be a string "
|
||||
"or unicode.")
|
||||
% (field_name, type(value)))
|
||||
if not value:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The '%s' is empty or 0. It should have a non-null value.")
|
||||
% field_name)
|
||||
if max_size and len(value) > max_size:
|
||||
value = value[0:max_size]
|
||||
return value
|
||||
|
||||
def _prepare_export_sepa(
|
||||
self, cr, uid, total_amount, transactions_count, xml_string,
|
||||
gen_args, context=None):
|
||||
return {
|
||||
'batch_booking': gen_args['sepa_export'].batch_booking,
|
||||
'charge_bearer': gen_args['sepa_export'].charge_bearer,
|
||||
'total_amount': total_amount,
|
||||
'nb_transactions': transactions_count,
|
||||
'file': base64.encodestring(xml_string),
|
||||
'payment_order_ids': [(
|
||||
6, 0, [x.id for x in gen_args['sepa_export'].payment_order_ids]
|
||||
)],
|
||||
}
|
||||
|
||||
def _validate_xml(self, cr, uid, xml_string, gen_args, context=None):
|
||||
xsd_etree_obj = etree.parse(
|
||||
tools.file_open(gen_args['pain_xsd_file']))
|
||||
official_pain_schema = etree.XMLSchema(xsd_etree_obj)
|
||||
|
||||
try:
|
||||
root_to_validate = etree.fromstring(xml_string)
|
||||
official_pain_schema.assertValid(root_to_validate)
|
||||
except Exception, e:
|
||||
logger.warning(
|
||||
"The XML file is invalid against the XML Schema Definition")
|
||||
logger.warning(xml_string)
|
||||
logger.warning(e)
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The generated XML file is not valid against the official "
|
||||
"XML Schema Definition. The generated XML file and the "
|
||||
"full error have been written in the server logs. Here "
|
||||
"is the error, which may give you an idea on the cause "
|
||||
"of the problem : %s")
|
||||
% str(e))
|
||||
return True
|
||||
|
||||
def finalize_sepa_file_creation(
|
||||
self, cr, uid, ids, xml_root, total_amount, transactions_count,
|
||||
gen_args, context=None):
|
||||
xml_string = etree.tostring(
|
||||
xml_root, pretty_print=True, encoding='UTF-8',
|
||||
xml_declaration=True)
|
||||
logger.debug(
|
||||
"Generated SEPA XML file in format %s below"
|
||||
% gen_args['pain_flavor'])
|
||||
logger.debug(xml_string)
|
||||
self._validate_xml(cr, uid, xml_string, gen_args, context=context)
|
||||
|
||||
file_id = gen_args['file_obj'].create(
|
||||
cr, uid, self._prepare_export_sepa(
|
||||
cr, uid, total_amount, transactions_count,
|
||||
xml_string, gen_args, context=context),
|
||||
context=context)
|
||||
|
||||
self.write(
|
||||
cr, uid, ids, {
|
||||
'file_id': file_id,
|
||||
'state': 'finish',
|
||||
}, context=context)
|
||||
|
||||
action = {
|
||||
'name': 'SEPA File',
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form,tree',
|
||||
'res_model': self._name,
|
||||
'res_id': ids[0],
|
||||
'target': 'new',
|
||||
}
|
||||
return action
|
||||
|
||||
def generate_group_header_block(
|
||||
self, cr, uid, parent_node, gen_args, context=None):
|
||||
group_header_1_0 = etree.SubElement(parent_node, 'GrpHdr')
|
||||
message_identification_1_1 = etree.SubElement(
|
||||
group_header_1_0, 'MsgId')
|
||||
message_identification_1_1.text = self._prepare_field(
|
||||
cr, uid, 'Message Identification',
|
||||
'sepa_export.payment_order_ids[0].reference',
|
||||
{'sepa_export': gen_args['sepa_export']}, 35,
|
||||
gen_args=gen_args, context=context)
|
||||
creation_date_time_1_2 = etree.SubElement(group_header_1_0, 'CreDtTm')
|
||||
creation_date_time_1_2.text = datetime.strftime(
|
||||
datetime.today(), '%Y-%m-%dT%H:%M:%S')
|
||||
if gen_args.get('pain_flavor') == 'pain.001.001.02':
|
||||
# batch_booking is in "Group header" with pain.001.001.02
|
||||
# and in "Payment info" in pain.001.001.03/04
|
||||
batch_booking = etree.SubElement(group_header_1_0, 'BtchBookg')
|
||||
batch_booking.text = \
|
||||
str(gen_args['sepa_export'].batch_booking).lower()
|
||||
nb_of_transactions_1_6 = etree.SubElement(
|
||||
group_header_1_0, 'NbOfTxs')
|
||||
control_sum_1_7 = etree.SubElement(group_header_1_0, 'CtrlSum')
|
||||
# Grpg removed in pain.001.001.03
|
||||
if gen_args.get('pain_flavor') == 'pain.001.001.02':
|
||||
grouping = etree.SubElement(group_header_1_0, 'Grpg')
|
||||
grouping.text = 'GRPD'
|
||||
self.generate_initiating_party_block(
|
||||
cr, uid, group_header_1_0, gen_args,
|
||||
context=context)
|
||||
return group_header_1_0, nb_of_transactions_1_6, control_sum_1_7
|
||||
|
||||
def generate_start_payment_info_block(
|
||||
self, cr, uid, parent_node, payment_info_ident,
|
||||
priority, local_instrument, sequence_type, requested_date,
|
||||
eval_ctx, gen_args, context=None):
|
||||
payment_info_2_0 = etree.SubElement(parent_node, 'PmtInf')
|
||||
payment_info_identification_2_1 = etree.SubElement(
|
||||
payment_info_2_0, 'PmtInfId')
|
||||
payment_info_identification_2_1.text = self._prepare_field(
|
||||
cr, uid, 'Payment Information Identification',
|
||||
payment_info_ident, eval_ctx, 35,
|
||||
gen_args=gen_args, context=context)
|
||||
payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd')
|
||||
payment_method_2_2.text = gen_args['payment_method']
|
||||
if gen_args.get('pain_flavor') != 'pain.001.001.02':
|
||||
batch_booking_2_3 = etree.SubElement(payment_info_2_0, 'BtchBookg')
|
||||
batch_booking_2_3.text = \
|
||||
str(gen_args['sepa_export'].batch_booking).lower()
|
||||
# The "SEPA Customer-to-bank
|
||||
# Implementation guidelines" for SCT and SDD says that control sum
|
||||
# and nb_of_transactions should be present
|
||||
# at both "group header" level and "payment info" level
|
||||
nb_of_transactions_2_4 = etree.SubElement(
|
||||
payment_info_2_0, 'NbOfTxs')
|
||||
control_sum_2_5 = etree.SubElement(payment_info_2_0, 'CtrlSum')
|
||||
payment_type_info_2_6 = etree.SubElement(
|
||||
payment_info_2_0, 'PmtTpInf')
|
||||
if priority:
|
||||
instruction_priority_2_7 = etree.SubElement(
|
||||
payment_type_info_2_6, 'InstrPrty')
|
||||
instruction_priority_2_7.text = priority
|
||||
service_level_2_8 = etree.SubElement(
|
||||
payment_type_info_2_6, 'SvcLvl')
|
||||
service_level_code_2_9 = etree.SubElement(service_level_2_8, 'Cd')
|
||||
service_level_code_2_9.text = 'SEPA'
|
||||
if local_instrument:
|
||||
local_instrument_2_11 = etree.SubElement(
|
||||
payment_type_info_2_6, 'LclInstrm')
|
||||
local_instr_code_2_12 = etree.SubElement(
|
||||
local_instrument_2_11, 'Cd')
|
||||
local_instr_code_2_12.text = local_instrument
|
||||
if sequence_type:
|
||||
sequence_type_2_14 = etree.SubElement(
|
||||
payment_type_info_2_6, 'SeqTp')
|
||||
sequence_type_2_14.text = sequence_type
|
||||
|
||||
if gen_args['payment_method'] == 'DD':
|
||||
request_date_tag = 'ReqdColltnDt'
|
||||
else:
|
||||
request_date_tag = 'ReqdExctnDt'
|
||||
requested_date_2_17 = etree.SubElement(
|
||||
payment_info_2_0, request_date_tag)
|
||||
requested_date_2_17.text = requested_date
|
||||
return payment_info_2_0, nb_of_transactions_2_4, control_sum_2_5
|
||||
|
||||
def generate_initiating_party_block(
|
||||
self, cr, uid, parent_node, gen_args, context=None):
|
||||
my_company_name = self._prepare_field(
|
||||
cr, uid, 'Company Name',
|
||||
'sepa_export.payment_order_ids[0].mode.bank_id.partner_id.name',
|
||||
{'sepa_export': gen_args['sepa_export']},
|
||||
gen_args.get('name_maxsize'), gen_args=gen_args, context=context)
|
||||
initiating_party_1_8 = etree.SubElement(parent_node, 'InitgPty')
|
||||
initiating_party_name = etree.SubElement(initiating_party_1_8, 'Nm')
|
||||
initiating_party_name.text = my_company_name
|
||||
initiating_party_identifier = self.pool['res.company'].\
|
||||
_get_initiating_party_identifier(
|
||||
cr, uid,
|
||||
gen_args['sepa_export'].payment_order_ids[0].company_id.id,
|
||||
context=context)
|
||||
initiating_party_issuer = gen_args['sepa_export'].\
|
||||
payment_order_ids[0].company_id.initiating_party_issuer
|
||||
if initiating_party_identifier and initiating_party_issuer:
|
||||
iniparty_id = etree.SubElement(initiating_party_1_8, 'Id')
|
||||
iniparty_org_id = etree.SubElement(iniparty_id, 'OrgId')
|
||||
iniparty_org_other = etree.SubElement(iniparty_org_id, 'Othr')
|
||||
iniparty_org_other_id = etree.SubElement(iniparty_org_other, 'Id')
|
||||
iniparty_org_other_id.text = initiating_party_identifier
|
||||
iniparty_org_other_issuer = etree.SubElement(
|
||||
iniparty_org_other, 'Issr')
|
||||
iniparty_org_other_issuer.text = initiating_party_issuer
|
||||
return True
|
||||
|
||||
def generate_party_agent(
|
||||
self, cr, uid, parent_node, party_type, party_type_label,
|
||||
order, party_name, iban, bic, eval_ctx, gen_args, context=None):
|
||||
'''Generate the piece of the XML file corresponding to BIC
|
||||
This code is mutualized between TRF and DD'''
|
||||
assert order in ('B', 'C'), "Order can be 'B' or 'C'"
|
||||
try:
|
||||
bic = self._prepare_field(
|
||||
cr, uid, '%s BIC' % party_type_label, bic, eval_ctx,
|
||||
gen_args=gen_args, context=context)
|
||||
party_agent = etree.SubElement(parent_node, '%sAgt' % party_type)
|
||||
party_agent_institution = etree.SubElement(
|
||||
party_agent, 'FinInstnId')
|
||||
party_agent_bic = etree.SubElement(
|
||||
party_agent_institution, gen_args.get('bic_xml_tag'))
|
||||
party_agent_bic.text = bic
|
||||
except orm.except_orm:
|
||||
if order == 'C':
|
||||
if iban[0:2] != gen_args['initiating_party_country_code']:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The bank account with IBAN '%s' of partner '%s' "
|
||||
"must have an associated BIC because it is a "
|
||||
"cross-border SEPA operation.")
|
||||
% (iban, party_name))
|
||||
if order == 'B' or (
|
||||
order == 'C' and gen_args['payment_method'] == 'DD'):
|
||||
party_agent = etree.SubElement(
|
||||
parent_node, '%sAgt' % party_type)
|
||||
party_agent_institution = etree.SubElement(
|
||||
party_agent, 'FinInstnId')
|
||||
party_agent_other = etree.SubElement(
|
||||
party_agent_institution, 'Othr')
|
||||
party_agent_other_identification = etree.SubElement(
|
||||
party_agent_other, 'Id')
|
||||
party_agent_other_identification.text = 'NOTPROVIDED'
|
||||
# for Credit Transfers, in the 'C' block, if BIC is not provided,
|
||||
# we should not put the 'Creditor Agent' block at all,
|
||||
# as per the guidelines of the EPC
|
||||
return True
|
||||
|
||||
def generate_party_block(
|
||||
self, cr, uid, parent_node, party_type, order, name, iban, bic,
|
||||
eval_ctx, gen_args, context=None):
|
||||
'''Generate the piece of the XML file corresponding to Name+IBAN+BIC
|
||||
This code is mutualized between TRF and DD'''
|
||||
assert order in ('B', 'C'), "Order can be 'B' or 'C'"
|
||||
if party_type == 'Cdtr':
|
||||
party_type_label = 'Creditor'
|
||||
elif party_type == 'Dbtr':
|
||||
party_type_label = 'Debtor'
|
||||
party_name = self._prepare_field(
|
||||
cr, uid, '%s Name' % party_type_label, name, eval_ctx,
|
||||
gen_args.get('name_maxsize'),
|
||||
gen_args=gen_args, context=context)
|
||||
piban = self._prepare_field(
|
||||
cr, uid, '%s IBAN' % party_type_label, iban, eval_ctx,
|
||||
gen_args=gen_args,
|
||||
context=context)
|
||||
viban = self._validate_iban(cr, uid, piban, context=context)
|
||||
# At C level, the order is : BIC, Name, IBAN
|
||||
# At B level, the order is : Name, IBAN, BIC
|
||||
if order == 'B':
|
||||
gen_args['initiating_party_country_code'] = viban[0:2]
|
||||
elif order == 'C':
|
||||
self.generate_party_agent(
|
||||
cr, uid, parent_node, party_type, party_type_label,
|
||||
order, party_name, viban, bic,
|
||||
eval_ctx, gen_args, context=context)
|
||||
party = etree.SubElement(parent_node, party_type)
|
||||
party_nm = etree.SubElement(party, 'Nm')
|
||||
party_nm.text = party_name
|
||||
party_account = etree.SubElement(
|
||||
parent_node, '%sAcct' % party_type)
|
||||
party_account_id = etree.SubElement(party_account, 'Id')
|
||||
party_account_iban = etree.SubElement(
|
||||
party_account_id, 'IBAN')
|
||||
party_account_iban.text = viban
|
||||
if order == 'B':
|
||||
self.generate_party_agent(
|
||||
cr, uid, parent_node, party_type, party_type_label,
|
||||
order, party_name, viban, bic,
|
||||
eval_ctx, gen_args, context=context)
|
||||
return True
|
||||
|
||||
def generate_remittance_info_block(
|
||||
self, cr, uid, parent_node, line, gen_args, context=None):
|
||||
|
||||
remittance_info_2_91 = etree.SubElement(
|
||||
parent_node, 'RmtInf')
|
||||
if line.state == 'normal':
|
||||
remittance_info_unstructured_2_99 = etree.SubElement(
|
||||
remittance_info_2_91, 'Ustrd')
|
||||
remittance_info_unstructured_2_99.text = \
|
||||
self._prepare_field(
|
||||
cr, uid, 'Remittance Unstructured Information',
|
||||
'line.communication', {'line': line}, 140,
|
||||
gen_args=gen_args,
|
||||
context=context)
|
||||
else:
|
||||
if not line.struct_communication_type:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("Missing 'Structured Communication Type' on payment "
|
||||
"line with reference '%s'.")
|
||||
% (line.name))
|
||||
remittance_info_structured_2_100 = etree.SubElement(
|
||||
remittance_info_2_91, 'Strd')
|
||||
creditor_ref_information_2_120 = etree.SubElement(
|
||||
remittance_info_structured_2_100, 'CdtrRefInf')
|
||||
if gen_args.get('pain_flavor') == 'pain.001.001.02':
|
||||
creditor_ref_info_type_2_121 = etree.SubElement(
|
||||
creditor_ref_information_2_120, 'CdtrRefTp')
|
||||
creditor_ref_info_type_code_2_123 = etree.SubElement(
|
||||
creditor_ref_info_type_2_121, 'Cd')
|
||||
creditor_ref_info_type_issuer_2_125 = etree.SubElement(
|
||||
creditor_ref_info_type_2_121, 'Issr')
|
||||
creditor_reference_2_126 = etree.SubElement(
|
||||
creditor_ref_information_2_120, 'CdtrRef')
|
||||
else:
|
||||
creditor_ref_info_type_2_121 = etree.SubElement(
|
||||
creditor_ref_information_2_120, 'Tp')
|
||||
creditor_ref_info_type_or_2_122 = etree.SubElement(
|
||||
creditor_ref_info_type_2_121, 'CdOrPrtry')
|
||||
creditor_ref_info_type_code_2_123 = etree.SubElement(
|
||||
creditor_ref_info_type_or_2_122, 'Cd')
|
||||
creditor_ref_info_type_issuer_2_125 = etree.SubElement(
|
||||
creditor_ref_info_type_2_121, 'Issr')
|
||||
creditor_reference_2_126 = etree.SubElement(
|
||||
creditor_ref_information_2_120, 'Ref')
|
||||
|
||||
creditor_ref_info_type_code_2_123.text = 'SCOR'
|
||||
creditor_ref_info_type_issuer_2_125.text = \
|
||||
line.struct_communication_type
|
||||
creditor_reference_2_126.text = \
|
||||
self._prepare_field(
|
||||
cr, uid, 'Creditor Structured Reference',
|
||||
'line.communication', {'line': line}, 35,
|
||||
gen_args=gen_args,
|
||||
context=context)
|
||||
return True
|
||||
|
||||
def generate_creditor_scheme_identification(
|
||||
self, cr, uid, parent_node, identification, identification_label,
|
||||
eval_ctx, scheme_name_proprietary, gen_args, context=None):
|
||||
csi_id = etree.SubElement(
|
||||
parent_node, 'Id')
|
||||
csi_privateid = csi_id = etree.SubElement(csi_id, 'PrvtId')
|
||||
csi_other = etree.SubElement(csi_privateid, 'Othr')
|
||||
csi_other_id = etree.SubElement(csi_other, 'Id')
|
||||
csi_other_id.text = self._prepare_field(
|
||||
cr, uid, identification_label, identification, eval_ctx,
|
||||
gen_args=gen_args, context=context)
|
||||
csi_scheme_name = etree.SubElement(csi_other, 'SchmeNm')
|
||||
csi_scheme_name_proprietary = etree.SubElement(
|
||||
csi_scheme_name, 'Prtry')
|
||||
csi_scheme_name_proprietary.text = scheme_name_proprietary
|
||||
return True
|
||||
82
account_banking_pain_base/company.py
Normal file
82
account_banking_pain_base/company.py
Normal file
@@ -0,0 +1,82 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# PAIN Base module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# Copyright (C) 2013 Noviat (http://www.noviat.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# @author: Luc de Meyer (Noviat)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class res_company(orm.Model):
|
||||
_inherit = 'res.company'
|
||||
|
||||
_columns = {
|
||||
'initiating_party_issuer': fields.char(
|
||||
'Initiating Party Issuer', size=35,
|
||||
help="This will be used as the 'Initiating Party Issuer' in the "
|
||||
"PAIN files generated by OpenERP."),
|
||||
}
|
||||
|
||||
def _get_initiating_party_identifier(
|
||||
self, cr, uid, company_id, context=None):
|
||||
'''The code here may be different from one country to another.
|
||||
If you need to add support for an additionnal country, you can
|
||||
contribute your code here or inherit this function in the
|
||||
localization modules for your country'''
|
||||
assert isinstance(company_id, int), 'Only one company ID'
|
||||
company = self.browse(cr, uid, company_id, context=context)
|
||||
company_vat = company.vat
|
||||
party_identifier = False
|
||||
if company_vat:
|
||||
country_code = company_vat[0:2].upper()
|
||||
if country_code == 'BE':
|
||||
party_identifier = company_vat[2:].replace(' ', '')
|
||||
elif country_code == 'ES':
|
||||
party_identifier = company.sepa_creditor_identifier
|
||||
return party_identifier
|
||||
|
||||
def _initiating_party_issuer_default(self, cr, uid, context=None):
|
||||
'''If you need to add support for an additionnal country, you can
|
||||
add an entry in the dict "party_issuer_per_country" here
|
||||
or inherit this function in the localization modules for
|
||||
your country'''
|
||||
initiating_party_issuer = ''
|
||||
# If your country require the 'Initiating Party Issuer', you should
|
||||
# contribute the entry for your country in the dict below
|
||||
party_issuer_per_country = {
|
||||
'BE': 'KBO-BCE', # KBO-BCE = the registry of companies in Belgium
|
||||
}
|
||||
company_id = self._company_default_get(
|
||||
cr, uid, 'res.company', context=context)
|
||||
if company_id:
|
||||
company = self.browse(cr, uid, company_id, context=context)
|
||||
country_code = company.country_id.code
|
||||
initiating_party_issuer = party_issuer_per_country.get(
|
||||
country_code, '')
|
||||
return initiating_party_issuer
|
||||
|
||||
def _initiating_party_issuer_def(self, cr, uid, context=None):
|
||||
return self._initiating_party_issuer_default(
|
||||
cr, uid, context=context)
|
||||
|
||||
_defaults = {
|
||||
'initiating_party_issuer': _initiating_party_issuer_def,
|
||||
}
|
||||
25
account_banking_pain_base/company_view.xml
Normal file
25
account_banking_pain_base/company_view.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_company_form" model="ir.ui.view">
|
||||
<field name="name">pain.group.on.res.company.form</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.view_company_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Configuration">
|
||||
<group name="pain" string="Payment Initiation">
|
||||
<field name="initiating_party_issuer"/>
|
||||
</group>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
146
account_banking_pain_base/i18n/account_banking_pain_base.pot
Normal file
146
account_banking_pain_base/i18n/account_banking_pain_base.pot
Normal file
@@ -0,0 +1,146 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_banking_pain_base
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-23 21:26+0000\n"
|
||||
"PO-Revision-Date: 2013-12-23 21:26+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:res.company,initiating_party_issuer:0
|
||||
msgid "Initiating Party Issuer"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:122
|
||||
#, python-format
|
||||
msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.line,priority:0
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_payment_line
|
||||
msgid "Payment Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_payment_mode
|
||||
msgid "Payment Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:res.company,initiating_party_issuer:0
|
||||
msgid "This will be used as the 'Initiating Party Issuer' in the PAIN files generated by OpenERP."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:351
|
||||
#, python-format
|
||||
msgid "Missing 'Structured Communication Type' on payment line with reference '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: selection:payment.line,priority:0
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:70
|
||||
#, python-format
|
||||
msgid "Cannot compute the '%s' of the Payment Line with reference '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:77
|
||||
#, python-format
|
||||
msgid "Cannot compute the '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:81
|
||||
#, python-format
|
||||
msgid "The type of the field '%s' is %s. It should be a string or unicode."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:47
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:69
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:76
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:86
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:121
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:350
|
||||
#, python-format
|
||||
msgid "Error:"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:47
|
||||
#, python-format
|
||||
msgid "This IBAN is not valid : %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:80
|
||||
#, python-format
|
||||
msgid "Field type error:"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.line,struct_communication_type:0
|
||||
msgid "Structured Communication Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:87
|
||||
#, python-format
|
||||
msgid "The '%s' is empty or 0. It should have a non-null value."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_banking_export_pain
|
||||
msgid "banking.export.pain"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:payment.mode,convert_to_ascii:0
|
||||
msgid "If active, OpenERP will convert each accented caracter to the corresponding unaccented caracter, so that only ASCII caracters are used in the generated PAIN file."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:payment.line,priority:0
|
||||
msgid "This field will be used as the 'Instruction Priority' in the generated PAIN file."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: view:res.company:0
|
||||
msgid "Payment Initiation"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: selection:payment.line,priority:0
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.mode,convert_to_ascii:0
|
||||
msgid "Convert to ASCII"
|
||||
msgstr ""
|
||||
|
||||
172
account_banking_pain_base/i18n/fr.po
Normal file
172
account_banking_pain_base/i18n/fr.po
Normal file
@@ -0,0 +1,172 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_banking_pain_base
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-23 21:26+0000\n"
|
||||
"PO-Revision-Date: 2014-02-01 04:48+0000\n"
|
||||
"Last-Translator: Alexis de Lattre <alexis@via.ecp.fr>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 17031)\n"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:res.company,initiating_party_issuer:0
|
||||
msgid "Initiating Party Issuer"
|
||||
msgstr "Initiating Party Issuer"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The generated XML file is not valid against the official XML Schema "
|
||||
"Definition. The generated XML file and the full error have been written in "
|
||||
"the server logs. Here is the error, which may give you an idea on the cause "
|
||||
"of the problem : %s"
|
||||
msgstr ""
|
||||
"Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma "
|
||||
"XML officiel. Le fichier XML généré et le message d'erreur complet ont été "
|
||||
"écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être "
|
||||
"une idée sur la cause du problème : %s"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.line,priority:0
|
||||
msgid "Priority"
|
||||
msgstr "Priorité"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_payment_line
|
||||
msgid "Payment Line"
|
||||
msgstr "Ligne de paiement"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_payment_mode
|
||||
msgid "Payment Mode"
|
||||
msgstr "Mode de paiement"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:res.company,initiating_party_issuer:0
|
||||
msgid ""
|
||||
"This will be used as the 'Initiating Party Issuer' in the PAIN files "
|
||||
"generated by OpenERP."
|
||||
msgstr ""
|
||||
"Ce champ sera le 'Initiating Party Issuer' dans les fichiers PAIN générés "
|
||||
"par OpenERP."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:351
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Missing 'Structured Communication Type' on payment line with reference '%s'."
|
||||
msgstr ""
|
||||
"Le 'Type de communication structuré' n'est pas renseigné sur la ligne de "
|
||||
"paiement ayant la référence '%s'."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: selection:payment.line,priority:0
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:70
|
||||
#, python-format
|
||||
msgid "Cannot compute the '%s' of the Payment Line with reference '%s'."
|
||||
msgstr ""
|
||||
"Impossible de calculer le '%s' de la ligne de paiement ayant la référence "
|
||||
"'%s'."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:77
|
||||
#, python-format
|
||||
msgid "Cannot compute the '%s'."
|
||||
msgstr "Impossible de calculer le '%s'."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:81
|
||||
#, python-format
|
||||
msgid "The type of the field '%s' is %s. It should be a string or unicode."
|
||||
msgstr ""
|
||||
"Le type du champ '%s' est %s. Il devrait être de type string ou unicode."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:47
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:69
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:76
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:86
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:121
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:350
|
||||
#, python-format
|
||||
msgid "Error:"
|
||||
msgstr "Erreur :"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Sociétés"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:47
|
||||
#, python-format
|
||||
msgid "This IBAN is not valid : %s"
|
||||
msgstr "Cet IBAN n'est pas valide : %s"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:80
|
||||
#, python-format
|
||||
msgid "Field type error:"
|
||||
msgstr "Erreur dans le type de champ :"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.line,struct_communication_type:0
|
||||
msgid "Structured Communication Type"
|
||||
msgstr "Type de communication structurée"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:87
|
||||
#, python-format
|
||||
msgid "The '%s' is empty or 0. It should have a non-null value."
|
||||
msgstr "Le '%s' est vide ou égal à 0. Il devrait avoir une valeur non-nulle."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_banking_export_pain
|
||||
msgid "banking.export.pain"
|
||||
msgstr "banking.export.pain"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:payment.mode,convert_to_ascii:0
|
||||
msgid ""
|
||||
"If active, OpenERP will convert each accented caracter to the corresponding "
|
||||
"unaccented caracter, so that only ASCII caracters are used in the generated "
|
||||
"PAIN file."
|
||||
msgstr ""
|
||||
"Si actif, OpenERP convertira chaque caractère accentué en son équivalent non "
|
||||
"accentué, de telle façon que seuls des caractères ASCII soient utilisés dans "
|
||||
"le fichier PAIN généré."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:payment.line,priority:0
|
||||
msgid ""
|
||||
"This field will be used as the 'Instruction Priority' in the generated PAIN "
|
||||
"file."
|
||||
msgstr "Ce champ sera le 'Instruction Priority' dans le fichier PAIN généré."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: view:res.company:0
|
||||
msgid "Payment Initiation"
|
||||
msgstr "Payment Initiation"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: selection:payment.line,priority:0
|
||||
msgid "High"
|
||||
msgstr "Élevé"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.mode,convert_to_ascii:0
|
||||
msgid "Convert to ASCII"
|
||||
msgstr "Convertir en ASCII"
|
||||
172
account_banking_pain_base/i18n/nl.po
Normal file
172
account_banking_pain_base/i18n/nl.po
Normal file
@@ -0,0 +1,172 @@
|
||||
# Dutch translation for banking-addons
|
||||
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
|
||||
# This file is distributed under the same license as the banking-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: banking-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2013-12-23 21:26+0000\n"
|
||||
"PO-Revision-Date: 2014-02-11 08:32+0000\n"
|
||||
"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 17031)\n"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:res.company,initiating_party_issuer:0
|
||||
msgid "Initiating Party Issuer"
|
||||
msgstr "Initiating Party Issuer"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The generated XML file is not valid against the official XML Schema "
|
||||
"Definition. The generated XML file and the full error have been written in "
|
||||
"the server logs. Here is the error, which may give you an idea on the cause "
|
||||
"of the problem : %s"
|
||||
msgstr ""
|
||||
"Het gegenereerde XML bestand is niet geldig volgens de officiële XML schema "
|
||||
"definities. Het gegenereerde XML bestand en de volledige fout zijn "
|
||||
"weggeschreven in de server log bestanden. Hier is de fout, wat u een idee "
|
||||
"kunt geven over de oorzaak van het probleem: %s\""
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.line,priority:0
|
||||
msgid "Priority"
|
||||
msgstr "Prioriteit"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_payment_line
|
||||
msgid "Payment Line"
|
||||
msgstr "Betaalregel"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_payment_mode
|
||||
msgid "Payment Mode"
|
||||
msgstr "Betaalwijze"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:res.company,initiating_party_issuer:0
|
||||
msgid ""
|
||||
"This will be used as the 'Initiating Party Issuer' in the PAIN files "
|
||||
"generated by OpenERP."
|
||||
msgstr ""
|
||||
"Dit wordt gebruikt als de 'Initiating Party Issuer' in de PAIN bestanden "
|
||||
"gegenereerd door OpenERP."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:351
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Missing 'Structured Communication Type' on payment line with reference '%s'."
|
||||
msgstr ""
|
||||
"Ontbrekende 'Structured Communication Type' op betaalregel met referentie "
|
||||
"'%s'."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: selection:payment.line,priority:0
|
||||
msgid "Normal"
|
||||
msgstr "Normaal"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:70
|
||||
#, python-format
|
||||
msgid "Cannot compute the '%s' of the Payment Line with reference '%s'."
|
||||
msgstr "Kan de '%s' niet berekenen van de betaalregel met referentie '%s'."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:77
|
||||
#, python-format
|
||||
msgid "Cannot compute the '%s'."
|
||||
msgstr "Kan de '%s' niet berekenen."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:81
|
||||
#, python-format
|
||||
msgid "The type of the field '%s' is %s. It should be a string or unicode."
|
||||
msgstr "Het type van veld '%s' is %s. Dit moet een string of unicode zijn."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:47
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:69
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:76
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:86
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:121
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:350
|
||||
#, python-format
|
||||
msgid "Error:"
|
||||
msgstr "Fout:"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Bedrijven"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:47
|
||||
#, python-format
|
||||
msgid "This IBAN is not valid : %s"
|
||||
msgstr "Deze IBAN is niet geldig : %s"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:80
|
||||
#, python-format
|
||||
msgid "Field type error:"
|
||||
msgstr "Veld type fout:"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.line,struct_communication_type:0
|
||||
msgid "Structured Communication Type"
|
||||
msgstr "Structured Communication Type"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: code:addons/account_banking_pain_base/banking_export_pain.py:87
|
||||
#, python-format
|
||||
msgid "The '%s' is empty or 0. It should have a non-null value."
|
||||
msgstr "De '%s' is leeg of 0. Deze waarde zou niet nul moeten zijn."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: model:ir.model,name:account_banking_pain_base.model_banking_export_pain
|
||||
msgid "banking.export.pain"
|
||||
msgstr "banking.export.pain"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:payment.mode,convert_to_ascii:0
|
||||
msgid ""
|
||||
"If active, OpenERP will convert each accented caracter to the corresponding "
|
||||
"unaccented caracter, so that only ASCII caracters are used in the generated "
|
||||
"PAIN file."
|
||||
msgstr ""
|
||||
"Indien aangevinkt, zal OpenERP elk geaccentueerde karakter omzetten in een "
|
||||
"overeenkomstige ongeaccentueerde karakter, zodat alleen ASCII karakters "
|
||||
"worden gebruikt in het gegenereerde PAIN bestand."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: help:payment.line,priority:0
|
||||
msgid ""
|
||||
"This field will be used as the 'Instruction Priority' in the generated PAIN "
|
||||
"file."
|
||||
msgstr ""
|
||||
"Dit veld wordt gebruikt als de 'Instruction Priority' in het gegenereerde "
|
||||
"PAIN bestand."
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: view:res.company:0
|
||||
msgid "Payment Initiation"
|
||||
msgstr "Payment Initiation"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: selection:payment.line,priority:0
|
||||
msgid "High"
|
||||
msgstr "Hoog"
|
||||
|
||||
#. module: account_banking_pain_base
|
||||
#: field:payment.mode,convert_to_ascii:0
|
||||
msgid "Convert to ASCII"
|
||||
msgstr "Converteer naar ASCII"
|
||||
52
account_banking_pain_base/payment_line.py
Normal file
52
account_banking_pain_base/payment_line.py
Normal file
@@ -0,0 +1,52 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# PAIN Base module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class payment_line(orm.Model):
|
||||
_inherit = 'payment.line'
|
||||
|
||||
def _get_struct_communication_types(self, cr, uid, context=None):
|
||||
return [('ISO', 'ISO')]
|
||||
|
||||
_columns = {
|
||||
'priority': fields.selection([
|
||||
('NORM', 'Normal'),
|
||||
('HIGH', 'High'),
|
||||
], 'Priority',
|
||||
help="This field will be used as the 'Instruction Priority' in "
|
||||
"the generated PAIN file."),
|
||||
# Update size from 64 to 140, because PAIN allows 140 caracters
|
||||
'communication': fields.char(
|
||||
'Communication', size=140, required=True,
|
||||
help="Used as the message between ordering customer and current "
|
||||
"company. Depicts 'What do you want to say to the recipient "
|
||||
"about this order ?'"),
|
||||
'struct_communication_type': fields.selection(
|
||||
_get_struct_communication_types, 'Structured Communication Type'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'priority': 'NORM',
|
||||
'struct_communication_type': 'ISO',
|
||||
}
|
||||
41
account_banking_pain_base/payment_line_view.xml
Normal file
41
account_banking_pain_base/payment_line_view.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_payment_line_form" model="ir.ui.view">
|
||||
<field name="name">pain.base.payment.line.form</field>
|
||||
<field name="model">payment.line</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_line_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="bank_id" position="after">
|
||||
<field name="priority"/>
|
||||
<newline />
|
||||
</field>
|
||||
<field name="state" position="after">
|
||||
<field name="struct_communication_type" attrs="{'invisible': [('state', '!=', 'structured')], 'required': [('state', '=', 'structured')]}"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_payment_order_form" model="ir.ui.view">
|
||||
<field name="name">pain.base.payment.line.inside.order.form</field>
|
||||
<field name="model">payment.order</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='line_ids']/form//field[@name='bank_id']" position="after">
|
||||
<field name="priority"/>
|
||||
<newline />
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='line_ids']/form//field[@name='state']" position="after">
|
||||
<field name="struct_communication_type" attrs="{'invisible': [('state', '!=', 'structured')], 'required': [('state', '=', 'structured')]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
39
account_banking_pain_base/payment_mode.py
Normal file
39
account_banking_pain_base/payment_mode.py
Normal file
@@ -0,0 +1,39 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# PAIN Base module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class payment_mode(orm.Model):
|
||||
_inherit = 'payment.mode'
|
||||
|
||||
_columns = {
|
||||
'convert_to_ascii': fields.boolean(
|
||||
'Convert to ASCII',
|
||||
help="If active, OpenERP will convert each accented caracter to "
|
||||
"the corresponding unaccented caracter, so that only ASCII "
|
||||
"caracters are used in the generated PAIN file."),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'convert_to_ascii': True,
|
||||
}
|
||||
22
account_banking_pain_base/payment_mode_view.xml
Normal file
22
account_banking_pain_base/payment_mode_view.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_payment_mode_form_inherit" model="ir.ui.view">
|
||||
<field name="name">add.convert_to_ascii.in.payment.mode.form</field>
|
||||
<field name="model">payment.mode</field>
|
||||
<field name="inherit_id" ref="account_banking_payment_export.view_payment_mode_form_inherit"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="type" position="after">
|
||||
<field name="convert_to_ascii"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
2
account_banking_payment_export/__init__.py
Normal file
2
account_banking_payment_export/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import model
|
||||
|
||||
85
account_banking_payment_export/__openerp__.py
Normal file
85
account_banking_payment_export/__openerp__.py
Normal file
@@ -0,0 +1,85 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# (C) 2011 - 2013 Therp BV (<http://therp.nl>).
|
||||
# (C) 2013 - 2014 ACSONE SA (<http://acsone.eu>).
|
||||
#
|
||||
# All other contributions are (C) by their respective contributors
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{
|
||||
'name': 'Account Banking - Payments Export Infrastructure',
|
||||
'version': '0.1.165',
|
||||
'license': 'AGPL-3',
|
||||
'author': 'Banking addons community',
|
||||
'website': 'https://launchpad.net/banking-addons',
|
||||
'category': 'Banking addons',
|
||||
'depends': [
|
||||
'account_payment',
|
||||
'base_iban', # for manual_bank_tranfer
|
||||
],
|
||||
'conflicts': [
|
||||
# lp:account-payment/account_payment_extension also adds
|
||||
# a type field to payment.mode, with a very similar purpose.
|
||||
# We can't add a dependency on account_payment_extension here
|
||||
# because account_payment_extension adds many other features
|
||||
# that probably conflict with other parts of lp:banking-addons.
|
||||
# Proposal to resolve: make account_payment_extension depend
|
||||
# on the present account_banking_payment_export module.
|
||||
'account_payment_extension',
|
||||
],
|
||||
'data': [
|
||||
'view/account_payment.xml',
|
||||
'view/bank_payment_manual.xml',
|
||||
'view/payment_mode.xml',
|
||||
'view/payment_mode_type.xml',
|
||||
'view/payment_order_create_view.xml',
|
||||
'data/payment_mode_type.xml',
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'demo': ['demo/banking_demo.xml'],
|
||||
'description': '''
|
||||
Infrastructure to export payment orders
|
||||
plus some bug fixes and obvious enhancements to payment orders
|
||||
that will hopefully land in offical addons one day.
|
||||
|
||||
This technical module provides the base infrastructure to export
|
||||
payment orders for electronic banking. It provides the following
|
||||
technical features:
|
||||
* a new payment.mode.type model
|
||||
* payment.mode now has a mandatory type
|
||||
* a better implementation of payment_mode.suitable_bank_types() based on payment.mode.type
|
||||
* the "make payment" button launches a wizard depending on the payment.mode.type
|
||||
* a manual payment mode type is provided as an example, with a default "do nothing" wizard
|
||||
|
||||
To enable the use of payment order to collect money for customers,
|
||||
it adds a payment_order_type (payment|debit) as a basis of direct debit support
|
||||
(this field becomes visible when account_direct_debit is installed).
|
||||
Refactoring note: this field should ideally go in account_direct_debit,
|
||||
but account_banking_payment currently depends on it.
|
||||
|
||||
Bug fixes and enhancement that should land in official addons:
|
||||
* make the search function of the payment export wizard extensible
|
||||
* fix lp:1275478: allow payment of customer refunds
|
||||
* display the maturity date of the move lines when you are in
|
||||
the wizard to select the lines to pay
|
||||
''',
|
||||
'installable': True,
|
||||
}
|
||||
14
account_banking_payment_export/data/payment_mode_type.xml
Normal file
14
account_banking_payment_export/data/payment_mode_type.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Add manual bank transfer as default payment option -->
|
||||
<record model="payment.mode.type" id="manual_bank_tranfer">
|
||||
<field name="name">Manual Bank Transfer</field>
|
||||
<field name="code">BANKMAN</field>
|
||||
<field name="suitable_bank_types"
|
||||
eval="[(6,0,[ref('base.bank_normal'),ref('base_iban.bank_iban'),])]" />
|
||||
<field name="ir_model_id"
|
||||
ref="model_payment_manual"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
78
account_banking_payment_export/demo/banking_demo.xml
Normal file
78
account_banking_payment_export/demo/banking_demo.xml
Normal file
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="bank_fortuneo" model="res.bank">
|
||||
<field name="name">Fortuneo Banque</field>
|
||||
<field name="bic">FTNOFRP1XXX</field>
|
||||
<field name="street">26 avenue des Champs Elysées</field>
|
||||
<field name="zip">75008</field>
|
||||
<field name="city">Paris</field>
|
||||
<field name="country" ref="base.fr"/>
|
||||
</record>
|
||||
|
||||
<record id="bank_la_banque_postale" model="res.bank">
|
||||
<field name="name">La Banque Postale</field>
|
||||
<field name="bic">PSSTFRPPXXX</field>
|
||||
<field name="street">115 rue de Sèvres</field>
|
||||
<field name="zip">75007</field>
|
||||
<field name="city">Paris</field>
|
||||
<field name="country" ref="base.fr"/>
|
||||
</record>
|
||||
|
||||
<record id="bank_societe_generale" model="res.bank">
|
||||
<field name="name">Société Générale</field>
|
||||
<field name="bic">SOGEFRPPXXX</field>
|
||||
<field name="street">1 avenue du Roi Fabien 1er</field>
|
||||
<field name="zip">75008</field>
|
||||
<field name="city">Paris</field>
|
||||
<field name="country" ref="base.fr"/>
|
||||
</record>
|
||||
|
||||
<record id="main_company_iban" model="res.partner.bank">
|
||||
<field name="acc_number">FR76 4242 4242 4242 4242 4242 424</field>
|
||||
<field name="state">iban</field>
|
||||
<field name="bank" ref="bank_la_banque_postale"/>
|
||||
<field name="partner_id" ref="base.main_partner" />
|
||||
<field name="bank_name">La Banque Postale</field>
|
||||
<field name="bank_bic">PSSTFRPPXXX</field>
|
||||
</record>
|
||||
|
||||
<record id="main_company_iban2" model="res.partner.bank">
|
||||
<field name="acc_number">FR20 1242 1242 1242 1242 1242 124</field>
|
||||
<field name="state">iban</field>
|
||||
<field name="bank" ref="bank_societe_generale"/>
|
||||
<field name="partner_id" ref="base.main_partner" />
|
||||
<field name="bank_name">Société Générale</field>
|
||||
<field name="bank_bic">SOGEFRPPXXX</field>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_12_iban" model="res.partner.bank">
|
||||
<field name="acc_number">FR66 1212 1212 1212 1212 1212 121</field>
|
||||
<field name="state">iban</field>
|
||||
<field name="bank" ref="bank_fortuneo"/>
|
||||
<field name="partner_id" ref="base.res_partner_12" />
|
||||
<field name="bank_name">Fortuneo Banque</field>
|
||||
<field name="bank_bic">FTNOFRP1XXX</field>
|
||||
</record>
|
||||
|
||||
<record id="payment_mode_2" model="payment.mode">
|
||||
<field name="name">Credit Trf Banque Postale</field>
|
||||
<field name="journal" ref="account.bank_journal"/>
|
||||
<field name="bank_id" ref="main_company_iban"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="type" ref="account_banking_payment_export.manual_bank_tranfer"/>
|
||||
</record>
|
||||
|
||||
<record id="payment_mode_3" model="payment.mode">
|
||||
<field name="name">Credit Trf Société Générale</field>
|
||||
<field name="journal" ref="account.bank_journal"/>
|
||||
<field name="bank_id" ref="main_company_iban2"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="type" ref="account_banking_payment_export.manual_bank_tranfer"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,145 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_banking_payment_export
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-10-25 15:58+0000\n"
|
||||
"PO-Revision-Date: 2013-10-25 15:58+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode.type,name:0
|
||||
msgid "Payment Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_order
|
||||
msgid "Payment Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid "Please execute payment order manually, and click OK when succesfully sent."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_mode
|
||||
msgid "Payment Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: code:addons/account_banking_payment_export/model/account_payment.py:69
|
||||
#, python-format
|
||||
msgid "You can only combine payment orders of the same type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type
|
||||
msgid "Payment Mode Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_account_move_line
|
||||
msgid "Journal Items"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_manual
|
||||
msgid "Send payment order(s) manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode.type,ir_model_id:0
|
||||
msgid "Select the Payment Wizard for payments of this type. Leave empty for manual processing"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid "Manual payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.manual,payment_order_ids:0
|
||||
msgid "Payment orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: code:addons/account_banking_payment_export/model/account_payment.py:52
|
||||
#, python-format
|
||||
msgid "Payment Order Export"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode,type:0
|
||||
msgid "Select the Payment Type for the Payment Mode."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.order:0
|
||||
msgid "launch_wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode.type,code:0
|
||||
msgid "Specify the Code for Payment Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_order_create
|
||||
msgid "payment.order.create"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: code:addons/account_banking_payment_export/model/account_payment.py:68
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,ir_model_id:0
|
||||
msgid "Payment wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode,type:0
|
||||
msgid "Payment type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,code:0
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.mode.type:0
|
||||
msgid "Payment mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,suitable_bank_types:0
|
||||
msgid "Suitable bank types"
|
||||
msgstr ""
|
||||
|
||||
151
account_banking_payment_export/i18n/nl.po
Normal file
151
account_banking_payment_export/i18n/nl.po
Normal file
@@ -0,0 +1,151 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_banking_payment_export
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-10-25 15:58+0000\n"
|
||||
"PO-Revision-Date: 2013-12-03 11:49+0000\n"
|
||||
"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 17031)\n"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode.type,name:0
|
||||
msgid "Payment Type"
|
||||
msgstr "Betaalwijze"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_order
|
||||
msgid "Payment Order"
|
||||
msgstr "Betalingsopdracht"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid ""
|
||||
"Please execute payment order manually, and click OK when succesfully sent."
|
||||
msgstr ""
|
||||
"Voer de betaalopdracht handmatig uit en klik OK, wanneer succesvol verzonden."
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_mode
|
||||
msgid "Payment Mode"
|
||||
msgstr "Betaalwijze"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: code:addons/account_banking_payment_export/model/account_payment.py:69
|
||||
#, python-format
|
||||
msgid "You can only combine payment orders of the same type"
|
||||
msgstr "U kunt alleen betalingsopdrachten van dezelfde soort combineren"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type
|
||||
msgid "Payment Mode Type"
|
||||
msgstr "Betaalwijze soort"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_account_move_line
|
||||
msgid "Journal Items"
|
||||
msgstr "Boekingen"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_manual
|
||||
msgid "Send payment order(s) manually"
|
||||
msgstr "Verzend betaalopdrachten handmatig"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,name:0
|
||||
msgid "Name"
|
||||
msgstr "Naam"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode.type,ir_model_id:0
|
||||
msgid ""
|
||||
"Select the Payment Wizard for payments of this type. Leave empty for manual "
|
||||
"processing"
|
||||
msgstr ""
|
||||
"Selecteer de wizard voor het verwerken van betalingen van dit type. Laat "
|
||||
"leeg voor handmatige verwerking."
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid "Manual payment"
|
||||
msgstr "Handmatige betaling"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.manual,payment_order_ids:0
|
||||
msgid "Payment orders"
|
||||
msgstr "Betaalopdrachten"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: code:addons/account_banking_payment_export/model/account_payment.py:52
|
||||
#, python-format
|
||||
msgid "Payment Order Export"
|
||||
msgstr "Betaalopdracht export"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode,type:0
|
||||
msgid "Select the Payment Type for the Payment Mode."
|
||||
msgstr "Selecteer het type van de betaalmodus."
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.order:0
|
||||
msgid "launch_wizard"
|
||||
msgstr "launch_wizard"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: help:payment.mode.type,code:0
|
||||
msgid "Specify the Code for Payment Type"
|
||||
msgstr "Geef de code op voor het betaaltype"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: model:ir.model,name:account_banking_payment_export.model_payment_order_create
|
||||
msgid "payment.order.create"
|
||||
msgstr "payment.order.create"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: code:addons/account_banking_payment_export/model/account_payment.py:68
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,ir_model_id:0
|
||||
msgid "Payment wizard"
|
||||
msgstr "Betaalwizard"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode,type:0
|
||||
msgid "Payment type"
|
||||
msgstr "Betaaltype"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,code:0
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.mode.type:0
|
||||
msgid "Payment mode"
|
||||
msgstr "Betaalwijze"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: view:payment.manual:0
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleren"
|
||||
|
||||
#. module: account_banking_payment_export
|
||||
#: field:payment.mode.type,suitable_bank_types:0
|
||||
msgid "Suitable bank types"
|
||||
msgstr "Geschikte banktypen"
|
||||
7
account_banking_payment_export/model/__init__.py
Normal file
7
account_banking_payment_export/model/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import account_move_line
|
||||
from . import account_payment
|
||||
from . import bank_payment_manual
|
||||
from . import payment_mode
|
||||
from . import payment_mode_type
|
||||
from . import payment_order_create
|
||||
98
account_banking_payment_export/model/account_move_line.py
Normal file
98
account_banking_payment_export/model/account_move_line.py
Normal file
@@ -0,0 +1,98 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2004-2014 OpenERP S.A. (http://www.openerp.com/)
|
||||
# (C) 2014 Akretion (http://www.akretion.com/)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
from operator import itemgetter
|
||||
|
||||
|
||||
# All the code below aims at fixing one small issue in _to_pay_search()
|
||||
# But _to_pay_search() is the search function of the field 'amount_to_pay'
|
||||
# which is a field.function and these functions are not inheritable in OpenERP.
|
||||
# So we have to inherit the field 'amount_to_pay' and duplicate the related
|
||||
# functions
|
||||
# If the patch that I proposed in this bug report
|
||||
# https://bugs.launchpad.net/openobject-addons/+bug/1275478
|
||||
# is integrated in addons/account_payment, then we will be able to remove this
|
||||
# file. -- Alexis de Lattre
|
||||
class account_move_line(orm.Model):
|
||||
_inherit = 'account.move.line'
|
||||
|
||||
def amount_to_pay(self, cr, uid, ids, name, arg=None, context=None):
|
||||
""" Return the amount still to pay regarding all the payemnt orders
|
||||
(excepting cancelled orders)"""
|
||||
if not ids:
|
||||
return {}
|
||||
cr.execute("""SELECT ml.id,
|
||||
CASE WHEN ml.amount_currency < 0
|
||||
THEN - ml.amount_currency
|
||||
ELSE ml.credit
|
||||
END -
|
||||
(SELECT coalesce(sum(amount_currency),0)
|
||||
FROM payment_line pl
|
||||
INNER JOIN payment_order po
|
||||
ON (pl.order_id = po.id)
|
||||
WHERE move_line_id = ml.id
|
||||
AND po.state != 'cancel') AS amount
|
||||
FROM account_move_line ml
|
||||
WHERE id IN %s""", (tuple(ids),))
|
||||
r = dict(cr.fetchall())
|
||||
return r
|
||||
|
||||
def _to_pay_search(self, cr, uid, obj, name, args, context=None):
|
||||
if not args:
|
||||
return []
|
||||
line_obj = self.pool.get('account.move.line')
|
||||
query = line_obj._query_get(cr, uid, context={})
|
||||
where = ' and '.join(map(lambda x: '''(SELECT
|
||||
CASE WHEN l.amount_currency < 0
|
||||
THEN - l.amount_currency
|
||||
ELSE l.credit
|
||||
END - coalesce(sum(pl.amount_currency), 0)
|
||||
FROM payment_line pl
|
||||
INNER JOIN payment_order po ON (pl.order_id = po.id)
|
||||
WHERE move_line_id = l.id
|
||||
AND po.state != 'cancel'
|
||||
) %(operator)s %%s ''' % {'operator': x[1]}, args))
|
||||
sql_args = tuple(map(itemgetter(2), args))
|
||||
|
||||
cr.execute(('''SELECT id
|
||||
FROM account_move_line l
|
||||
WHERE account_id IN (select id
|
||||
FROM account_account
|
||||
WHERE type in %s AND active)
|
||||
AND reconcile_id IS null
|
||||
AND credit > 0
|
||||
AND ''' + where + ' and ' + query),
|
||||
(('payable', 'receivable'),)+sql_args )
|
||||
# The patch we have compared to the original function in
|
||||
# addons/account_payment is just above :
|
||||
# original code : type = 'payable'
|
||||
# fixed code : type in ('payable', 'receivable')
|
||||
|
||||
res = cr.fetchall()
|
||||
if not res:
|
||||
return [('id', '=', '0')]
|
||||
return [('id', 'in', map(lambda x:x[0], res))]
|
||||
|
||||
_columns = {
|
||||
'amount_to_pay': fields.function(amount_to_pay,
|
||||
type='float', string='Amount to pay', fnct_search=_to_pay_search),
|
||||
}
|
||||
90
account_banking_payment_export/model/account_payment.py
Normal file
90
account_banking_payment_export/model/account_payment.py
Normal file
@@ -0,0 +1,90 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# (C) 2011 - 2013 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# All other contributions are (C) by their respective contributors
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
from openerp.tools.translate import _
|
||||
from openerp import netsvc
|
||||
|
||||
|
||||
class payment_order(orm.Model):
|
||||
_inherit = 'payment.order'
|
||||
|
||||
_columns = {
|
||||
'payment_order_type': fields.selection(
|
||||
[('payment', 'Payment'), ('debit', 'Direct debit')],
|
||||
'Payment order type', required=True,
|
||||
readonly=True, states={'draft': [('readonly', False)]},
|
||||
),
|
||||
'mode_type': fields.related(
|
||||
'mode', 'type', type='many2one', relation='payment.mode.type',
|
||||
string='Payment Type'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'payment_order_type': 'payment',
|
||||
}
|
||||
|
||||
def launch_wizard(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Search for a wizard to launch according to the type.
|
||||
If type is manual. just confirm the order.
|
||||
Previously (pre-v6) in account_payment/wizard/wizard_pay.py
|
||||
"""
|
||||
if context == None:
|
||||
context = {}
|
||||
result = {}
|
||||
orders = self.browse(cr, uid, ids, context)
|
||||
order = orders[0]
|
||||
# check if a wizard is defined for the first order
|
||||
if order.mode.type and order.mode.type.ir_model_id:
|
||||
context['active_ids'] = ids
|
||||
wizard_model = order.mode.type.ir_model_id.model
|
||||
wizard_obj = self.pool.get(wizard_model)
|
||||
wizard_id = wizard_obj.create(cr, uid, {}, context)
|
||||
result = {
|
||||
'name': wizard_obj._description or _('Payment Order Export'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'res_model': wizard_model,
|
||||
'domain': [],
|
||||
'context': context,
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'new',
|
||||
'res_id': wizard_id,
|
||||
'nodestroy': True,
|
||||
}
|
||||
else:
|
||||
# should all be manual orders without type or wizard model
|
||||
for order in orders[1:]:
|
||||
if order.mode.type and order.mode.type.ir_model_id:
|
||||
raise orm.except_orm(
|
||||
_('Error'),
|
||||
_('You can only combine payment orders of the same type')
|
||||
)
|
||||
# process manual payments
|
||||
wf_service = netsvc.LocalService('workflow')
|
||||
for order_id in ids:
|
||||
wf_service.trg_validate(uid, 'payment.order', order_id, 'done', cr)
|
||||
return result
|
||||
59
account_banking_payment_export/model/bank_payment_manual.py
Normal file
59
account_banking_payment_export/model/bank_payment_manual.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# (C) 2011 - 2013 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# All other contributions are (C) by their respective contributors
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
'''
|
||||
This module contains a single "wizard" for confirming manual
|
||||
bank transfers.
|
||||
'''
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
from openerp import netsvc
|
||||
|
||||
|
||||
class payment_manual(orm.TransientModel):
|
||||
_name = 'payment.manual'
|
||||
_description = 'Send payment order(s) manually'
|
||||
|
||||
_columns = {
|
||||
'payment_order_ids': fields.many2many('payment.order',
|
||||
'wiz_manual_payorders_rel', 'wizard_id', 'payment_order_id',
|
||||
'Payment orders', readonly=True),
|
||||
}
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
payment_order_ids = context.get('active_ids', [])
|
||||
vals.update({
|
||||
'payment_order_ids': [[6, 0, payment_order_ids]],
|
||||
})
|
||||
return super(payment_manual, self).create(cr, uid,
|
||||
vals, context=context)
|
||||
|
||||
def button_ok(self, cr, uid, ids, context=None):
|
||||
wf_service = netsvc.LocalService('workflow')
|
||||
for wiz in self.browse(cr, uid, ids, context=context):
|
||||
for order_id in wiz.payment_order_ids:
|
||||
wf_service.trg_validate(
|
||||
uid, 'payment.order', order_id.id, 'done', cr)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
61
account_banking_payment_export/model/payment_mode.py
Normal file
61
account_banking_payment_export/model/payment_mode.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# (C) 2011 - 2013 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# All other contributions are (C) by their respective contributors
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class payment_mode(orm.Model):
|
||||
''' Restoring the payment type from version 5,
|
||||
used to select the export wizard (if any) '''
|
||||
_inherit = "payment.mode"
|
||||
|
||||
def suitable_bank_types(self, cr, uid, payment_mode_id=None, context=None):
|
||||
""" Reinstates functional code for suitable bank type filtering.
|
||||
Current code in account_payment is disfunctional.
|
||||
"""
|
||||
res = []
|
||||
payment_mode = self.browse(
|
||||
cr, uid, payment_mode_id, context)
|
||||
if (payment_mode and payment_mode.type and
|
||||
payment_mode.type.suitable_bank_types):
|
||||
res = [t.code for t in payment_mode.type.suitable_bank_types]
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'type': fields.many2one(
|
||||
'payment.mode.type', 'Payment type',
|
||||
required=True,
|
||||
help='Select the Payment Type for the Payment Mode.'
|
||||
),
|
||||
'payment_order_type': fields.related(
|
||||
'type', 'payment_order_type', readonly=True, type='selection',
|
||||
selection=[('payment', 'Payment'), ('debit', 'Direct debit')],
|
||||
string="Payment Order Type"),
|
||||
'active': fields.boolean('Active'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'active': True,
|
||||
}
|
||||
71
account_banking_payment_export/model/payment_mode_type.py
Normal file
71
account_banking_payment_export/model/payment_mode_type.py
Normal file
@@ -0,0 +1,71 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# (C) 2011 - 2013 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# All other contributions are (C) by their respective contributors
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class payment_mode_type(orm.Model):
|
||||
_name = 'payment.mode.type'
|
||||
_description = 'Payment Mode Type'
|
||||
_columns = {
|
||||
'name': fields.char(
|
||||
'Name', size=64, required=True,
|
||||
help='Payment Type'
|
||||
),
|
||||
'code': fields.char(
|
||||
'Code', size=64, required=True,
|
||||
help='Specify the Code for Payment Type'
|
||||
),
|
||||
'suitable_bank_types': fields.many2many(
|
||||
'res.partner.bank.type',
|
||||
'bank_type_payment_type_rel',
|
||||
'pay_type_id', 'bank_type_id',
|
||||
'Suitable bank types', required=True),
|
||||
'ir_model_id': fields.many2one(
|
||||
'ir.model', 'Payment wizard',
|
||||
help=('Select the Payment Wizard for payments of this type. '
|
||||
'Leave empty for manual processing'),
|
||||
domain=[('osv_memory', '=', True)],
|
||||
),
|
||||
'payment_order_type': fields.selection(
|
||||
[('payment', 'Payment'), ('debit', 'Direct debit')],
|
||||
'Payment order type', required=True,
|
||||
),
|
||||
'active': fields.boolean('Active'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'payment_order_type': 'payment',
|
||||
'active': True,
|
||||
}
|
||||
|
||||
def _auto_init(self, cr, context=None):
|
||||
r = super(payment_mode_type, self)._auto_init(cr, context=context)
|
||||
# migrate xmlid from manual_bank_transfer to avoid dependency on account_banking
|
||||
cr.execute("""UPDATE ir_model_data SET module='account_banking_payment_export'
|
||||
WHERE module='account_banking' AND
|
||||
name='manual_bank_tranfer' AND
|
||||
model='payment.mode.type'""")
|
||||
return r
|
||||
199
account_banking_payment_export/model/payment_order_create.py
Normal file
199
account_banking_payment_export/model/payment_order_create.py
Normal file
@@ -0,0 +1,199 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# (C) 2011 - 2013 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# All other contributions are (C) by their respective contributors
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
from openerp.tools.translate import _
|
||||
|
||||
|
||||
class payment_order_create(orm.TransientModel):
|
||||
_inherit = 'payment.order.create'
|
||||
|
||||
def extend_payment_order_domain(
|
||||
self, cr, uid, payment_order, domain, context=None):
|
||||
if payment_order.payment_order_type == 'payment':
|
||||
domain += [
|
||||
('account_id.type', 'in', ('payable', 'receivable')),
|
||||
('amount_to_pay', '>', 0)
|
||||
]
|
||||
return True
|
||||
|
||||
def search_entries(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
This method taken from account_payment module.
|
||||
We adapt the domain based on the payment_order_type
|
||||
"""
|
||||
line_obj = self.pool.get('account.move.line')
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
if context is None:
|
||||
context = {}
|
||||
data = self.read(cr, uid, ids, ['duedate'], context=context)[0]
|
||||
search_due_date = data['duedate']
|
||||
|
||||
### start account_banking_payment ###
|
||||
payment = self.pool.get('payment.order').browse(
|
||||
cr, uid, context['active_id'], context=context)
|
||||
# Search for move line to pay:
|
||||
domain = [
|
||||
('move_id.state', '=', 'posted'),
|
||||
('reconcile_id', '=', False),
|
||||
('company_id', '=', payment.mode.company_id.id),
|
||||
]
|
||||
self.extend_payment_order_domain(
|
||||
cr, uid, payment, domain, context=context)
|
||||
### end account_direct_debit ###
|
||||
|
||||
domain = domain + [
|
||||
'|', ('date_maturity', '<=', search_due_date),
|
||||
('date_maturity', '=', False)
|
||||
]
|
||||
line_ids = line_obj.search(cr, uid, domain, context=context)
|
||||
context.update({'line_ids': line_ids})
|
||||
model_data_ids = mod_obj.search(
|
||||
cr, uid,[
|
||||
('model', '=', 'ir.ui.view'),
|
||||
('name', '=', 'view_create_payment_order_lines')],
|
||||
context=context)
|
||||
resource_id = mod_obj.read(
|
||||
cr, uid, model_data_ids, fields=['res_id'],
|
||||
context=context)[0]['res_id']
|
||||
return {'name': _('Entry Lines'),
|
||||
'context': context,
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'payment.order.create',
|
||||
'views': [(resource_id, 'form')],
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'new',
|
||||
}
|
||||
|
||||
def _prepare_payment_line(self, cr, uid, payment, line, context=None):
|
||||
'''This function is designed to be inherited
|
||||
The resulting dict is passed to the create method of payment.line'''
|
||||
_today = fields.date.context_today(self, cr, uid, context=context)
|
||||
if payment.date_prefered == "now":
|
||||
#no payment date => immediate payment
|
||||
date_to_pay = False
|
||||
elif payment.date_prefered == 'due':
|
||||
### account_banking
|
||||
# date_to_pay = line.date_maturity
|
||||
date_to_pay = (
|
||||
line.date_maturity
|
||||
if line.date_maturity and line.date_maturity > _today
|
||||
else False)
|
||||
### end account banking
|
||||
elif payment.date_prefered == 'fixed':
|
||||
### account_banking
|
||||
# date_to_pay = payment.date_scheduled
|
||||
date_to_pay = (
|
||||
payment.date_scheduled
|
||||
if payment.date_scheduled and payment.date_scheduled > _today
|
||||
else False)
|
||||
### end account banking
|
||||
|
||||
### account_banking
|
||||
state = 'normal'
|
||||
communication = line.ref or '-'
|
||||
if line.invoice:
|
||||
if line.invoice.type in ('in_invoice', 'in_refund'):
|
||||
if line.invoice.reference_type == 'structured':
|
||||
state = 'structured'
|
||||
communication = line.invoice.reference
|
||||
else:
|
||||
if line.invoice.reference:
|
||||
communication = line.invoice.reference
|
||||
elif line.invoice.supplier_invoice_number:
|
||||
communication = line.invoice.supplier_invoice_number
|
||||
else:
|
||||
# Make sure that the communication includes the
|
||||
# customer invoice number (in the case of debit order)
|
||||
communication = line.invoice.number.replace('/', '')
|
||||
state = 'structured'
|
||||
|
||||
# support debit orders when enabled
|
||||
if (payment.payment_order_type == 'debit' and
|
||||
'amount_to_receive' in line):
|
||||
amount_currency = line.amount_to_receive
|
||||
else:
|
||||
amount_currency = line.amount_to_pay
|
||||
### end account_banking
|
||||
|
||||
### account banking
|
||||
# t = None
|
||||
# line2bank = line_obj.line2bank(cr, uid, line_ids, t, context)
|
||||
line2bank = self.pool['account.move.line'].line2bank(
|
||||
cr, uid, [line.id], payment.mode.id, context)
|
||||
### end account banking
|
||||
|
||||
res = {
|
||||
'move_line_id': line.id,
|
||||
'amount_currency': amount_currency,
|
||||
'bank_id': line2bank.get(line.id),
|
||||
'order_id': payment.id,
|
||||
'partner_id': line.partner_id and line.partner_id.id or False,
|
||||
### account banking
|
||||
# 'communication': line.ref or '/'
|
||||
'communication': communication,
|
||||
'state': state,
|
||||
### end account banking
|
||||
'date': date_to_pay,
|
||||
'currency': (line.invoice and line.invoice.currency_id.id
|
||||
or line.journal_id.currency.id
|
||||
or line.journal_id.company_id.currency_id.id),
|
||||
}
|
||||
return res
|
||||
|
||||
def create_payment(self, cr, uid, ids, context=None):
|
||||
'''
|
||||
This method is a slightly modified version of the existing method on this
|
||||
model in account_payment.
|
||||
- pass the payment mode to line2bank()
|
||||
- allow invoices to create influence on the payment process: not only 'Free'
|
||||
references are allowed, but others as well
|
||||
- check date_to_pay is not in the past.
|
||||
'''
|
||||
if context is None:
|
||||
context = {}
|
||||
data = self.read(cr, uid, ids, [], context=context)[0]
|
||||
line_ids = data['entries']
|
||||
if not line_ids:
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
payment = self.pool['payment.order'].browse(
|
||||
cr, uid, context['active_id'], context=context)
|
||||
## Populate the current payment with new lines:
|
||||
for line in self.pool['account.move.line'].browse(
|
||||
cr, uid, line_ids, context=context):
|
||||
vals = self._prepare_payment_line(
|
||||
cr, uid, payment, line, context=context)
|
||||
self.pool['payment.line'].create(cr, uid, vals, context=context)
|
||||
# Force reload of payment order view as a workaround for lp:1155525
|
||||
return {'name': _('Payment Orders'),
|
||||
'context': context,
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form,tree',
|
||||
'res_model': 'payment.order',
|
||||
'res_id': context['active_id'],
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_payment_mode_type","payment.mode.type","model_payment_mode_type","account_payment.group_account_payment",1,1,1,1
|
||||
|
23
account_banking_payment_export/view/account_payment.xml
Normal file
23
account_banking_payment_export/view/account_payment.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- restore wizard functionality when making payments
|
||||
-->
|
||||
|
||||
<record id="view_banking_payment_order_form_1" model="ir.ui.view">
|
||||
<field name="name">account.payment.order.form.banking-1</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_order_form" />
|
||||
<field name="model">payment.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@string='Make Payments']"
|
||||
position="attributes">
|
||||
<attribute name="name">launch_wizard</attribute>
|
||||
</xpath>
|
||||
<field name="mode" position="after">
|
||||
<field name="mode_type" invisible="1"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
17
account_banking_payment_export/view/bank_payment_manual.xml
Normal file
17
account_banking_payment_export/view/bank_payment_manual.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="view_payment_manual_form" model="ir.ui.view">
|
||||
<field name="name">Form for manual payment wizard</field>
|
||||
<field name="model">payment.manual</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Manual payment">
|
||||
<label string="Please execute payment order manually, and click OK when succesfully sent."/>
|
||||
<newline />
|
||||
<button name="button_ok" type="object" string="OK" />
|
||||
<button special="cancel" string="Cancel" />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
21
account_banking_payment_export/view/payment_mode.xml
Normal file
21
account_banking_payment_export/view/payment_mode.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Add the payment mode type and transfer settings
|
||||
-->
|
||||
<record id="view_payment_mode_form_inherit" model="ir.ui.view">
|
||||
<field name="name">payment.mode.form.inherit</field>
|
||||
<field name="model">payment.mode</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_mode_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="active"/>
|
||||
<field name="type"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
60
account_banking_payment_export/view/payment_mode_type.xml
Normal file
60
account_banking_payment_export/view/payment_mode_type.xml
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_payment_mode_tree_inherit" model="ir.ui.view">
|
||||
<field name="name">payment.mode.tree.inherit</field>
|
||||
<field name="model">payment.mode</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_mode_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="type"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- basic view for payment mode type -->
|
||||
<record model="ir.ui.view" id="view_payment_mode_type_form">
|
||||
<field name="name">view.payment.mode.type.form</field>
|
||||
<field name="type">form</field>
|
||||
<field name="model">payment.mode.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Payment Type">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="active"/>
|
||||
<field name="ir_model_id"/>
|
||||
<field name="suitable_bank_types"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_payment_mode_type_tree" model="ir.ui.view">
|
||||
<field name="name">view.payment.mode.type.tree</field>
|
||||
<field name="model">payment.mode.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Payment Types">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="active"/>
|
||||
<field name="ir_model_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_payment_mode_type" model="ir.actions.act_window">
|
||||
<field name="name">Payment Type</field>
|
||||
<field name="res_model">payment.mode.type</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{'active_test': False}</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_payment_mode_type"
|
||||
action="action_payment_mode_type"
|
||||
parent="account.menu_configuration_misc" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_create_payment_order_lines" model="ir.ui.view">
|
||||
<field name="name">add.context.to.display.maturity.date</field>
|
||||
<field name="model">payment.order.create</field>
|
||||
<field name="inherit_id" ref="account_payment.view_create_payment_order_lines"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="entries" position="attributes">
|
||||
<attribute name="context">{'journal_type': 'sale'}</attribute>
|
||||
<attribute name="nolabel">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
25
account_banking_sepa_direct_debit/__init__.py
Normal file
25
account_banking_sepa_direct_debit/__init__.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# SEPA Direct Debit module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from . import company
|
||||
from . import wizard
|
||||
from . import account_banking_sdd
|
||||
62
account_banking_sepa_direct_debit/__openerp__.py
Normal file
62
account_banking_sepa_direct_debit/__openerp__.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# SEPA Direct Debit module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
'name': 'Account Banking SEPA Direct Debit',
|
||||
'summary': 'Create SEPA files for Direct Debit',
|
||||
'version': '0.1',
|
||||
'license': 'AGPL-3',
|
||||
'author': 'Akretion',
|
||||
'website': 'http://www.akretion.com',
|
||||
'category': 'Banking addons',
|
||||
'depends': ['account_direct_debit', 'account_banking_pain_base'],
|
||||
'external_dependencies': {
|
||||
'python': ['unidecode', 'lxml'],
|
||||
},
|
||||
'data': [
|
||||
'security/original_mandate_required_security.xml',
|
||||
'account_banking_sdd_view.xml',
|
||||
'sdd_mandate_view.xml',
|
||||
'res_partner_bank_view.xml',
|
||||
'account_payment_view.xml',
|
||||
'company_view.xml',
|
||||
'mandate_expire_cron.xml',
|
||||
'account_invoice_view.xml',
|
||||
'wizard/export_sdd_view.xml',
|
||||
'data/payment_type_sdd.xml',
|
||||
'data/mandate_reference_sequence.xml',
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'demo': ['sepa_direct_debit_demo.xml'],
|
||||
'description': '''
|
||||
Module to export direct debit payment orders in SEPA XML file format.
|
||||
|
||||
SEPA PAIN (PAyment INitiation) is the new european standard for Customer-to-Bank payment instructions. This module implements SEPA Direct Debit (SDD), more specifically PAIN versions 008.001.02, 008.001.03 and 008.001.04. It is part of the ISO 20022 standard, available on http://www.iso20022.org.
|
||||
|
||||
The Implementation Guidelines for SEPA Direct Debit published by the European Payments Council (http://http://www.europeanpaymentscouncil.eu) use PAIN version 008.001.02. So if you don't know which version your bank supports, you should try version 008.001.02 first.
|
||||
|
||||
This module uses the framework provided by the banking addons, cf https://launchpad.net/banking-addons
|
||||
|
||||
Please contact Alexis de Lattre from Akretion <alexis.delattre@akretion.com> for any help or question about this module.
|
||||
''',
|
||||
'active': False,
|
||||
'installable': True,
|
||||
}
|
||||
440
account_banking_sepa_direct_debit/account_banking_sdd.py
Normal file
440
account_banking_sepa_direct_debit/account_banking_sdd.py
Normal file
@@ -0,0 +1,440 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# SEPA Direct Debit module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
from openerp.tools.translate import _
|
||||
from openerp.addons.decimal_precision import decimal_precision as dp
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
import logging
|
||||
|
||||
NUMBER_OF_UNUSED_MONTHS_BEFORE_EXPIRY = 36
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class banking_export_sdd(orm.Model):
|
||||
'''SEPA Direct Debit export'''
|
||||
_name = 'banking.export.sdd'
|
||||
_description = __doc__
|
||||
_rec_name = 'filename'
|
||||
|
||||
def _generate_filename(self, cr, uid, ids, name, arg, context=None):
|
||||
from unidecode import unidecode
|
||||
res = {}
|
||||
for sepa_file in self.browse(cr, uid, ids, context=context):
|
||||
ref = sepa_file.payment_order_ids[0].reference
|
||||
if ref:
|
||||
label = unidecode(ref.replace('/', '-'))
|
||||
else:
|
||||
label = 'error'
|
||||
res[sepa_file.id] = 'sdd_%s.xml' % label
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'payment_order_ids': fields.many2many(
|
||||
'payment.order',
|
||||
'account_payment_order_sdd_rel',
|
||||
'banking_export_sepa_id', 'account_order_id',
|
||||
'Payment Orders',
|
||||
readonly=True),
|
||||
'nb_transactions': fields.integer(
|
||||
'Number of Transactions', readonly=True),
|
||||
'total_amount': fields.float(
|
||||
'Total Amount', digits_compute=dp.get_precision('Account'),
|
||||
readonly=True),
|
||||
'batch_booking': fields.boolean(
|
||||
'Batch Booking', readonly=True,
|
||||
help="If true, the bank statement will display only one credit "
|
||||
"line for all the direct debits of the SEPA file ; if false, "
|
||||
"the bank statement will display one credit line per direct "
|
||||
"debit of the SEPA file."),
|
||||
'charge_bearer': fields.selection([
|
||||
('SLEV', 'Following Service Level'),
|
||||
('SHAR', 'Shared'),
|
||||
('CRED', 'Borne by Creditor'),
|
||||
('DEBT', 'Borne by Debtor'),
|
||||
], 'Charge Bearer', readonly=True,
|
||||
help="Following service level : transaction charges are to be "
|
||||
"applied following the rules agreed in the service level and/or "
|
||||
"scheme (SEPA Core messages must use this). Shared : "
|
||||
"transaction charges on the creditor side are to be borne by "
|
||||
"the creditor, transaction charges on the debtor side are to be "
|
||||
"borne by the debtor. Borne by creditor : all transaction "
|
||||
"charges are to be borne by the creditor. Borne by debtor : "
|
||||
"all transaction charges are to be borne by the debtor."),
|
||||
'create_date': fields.datetime('Generation Date', readonly=True),
|
||||
'file': fields.binary('SEPA File', readonly=True),
|
||||
'filename': fields.function(
|
||||
_generate_filename, type='char', size=256,
|
||||
string='Filename', readonly=True, store=True),
|
||||
'state': fields.selection([
|
||||
('draft', 'Draft'),
|
||||
('sent', 'Sent'),
|
||||
], 'State', readonly=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'state': 'draft',
|
||||
}
|
||||
|
||||
|
||||
class sdd_mandate(orm.Model):
|
||||
'''SEPA Direct Debit Mandate'''
|
||||
_name = 'sdd.mandate'
|
||||
_description = __doc__
|
||||
_rec_name = 'unique_mandate_reference'
|
||||
_inherit = ['mail.thread']
|
||||
_order = 'signature_date desc'
|
||||
_track = {
|
||||
'state': {
|
||||
'account_banking_sepa_direct_debit.mandate_valid':
|
||||
lambda self, cr, uid, obj, ctx=None:
|
||||
obj['state'] == 'valid',
|
||||
'account_banking_sepa_direct_debit.mandate_expired':
|
||||
lambda self, cr, uid, obj, ctx=None:
|
||||
obj['state'] == 'expired',
|
||||
'account_banking_sepa_direct_debit.mandate_cancel':
|
||||
lambda self, cr, uid, obj, ctx=None:
|
||||
obj['state'] == 'cancel',
|
||||
},
|
||||
'recurrent_sequence_type': {
|
||||
'account_banking_sepa_direct_debit.recurrent_sequence_type_first':
|
||||
lambda self, cr, uid, obj, ctx=None:
|
||||
obj['recurrent_sequence_type'] == 'first',
|
||||
'account_banking_sepa_direct_debit.'
|
||||
'recurrent_sequence_type_recurring':
|
||||
lambda self, cr, uid, obj, ctx=None:
|
||||
obj['recurrent_sequence_type'] == 'recurring',
|
||||
'account_banking_sepa_direct_debit.recurrent_sequence_type_final':
|
||||
lambda self, cr, uid, obj, ctx=None:
|
||||
obj['recurrent_sequence_type'] == 'final',
|
||||
}
|
||||
}
|
||||
|
||||
_columns = {
|
||||
'partner_bank_id': fields.many2one(
|
||||
'res.partner.bank', 'Bank Account', track_visibility='onchange'),
|
||||
'partner_id': fields.related(
|
||||
'partner_bank_id', 'partner_id', type='many2one',
|
||||
relation='res.partner', string='Partner', readonly=True),
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
'unique_mandate_reference': fields.char(
|
||||
'Unique Mandate Reference', size=35, readonly=True,
|
||||
track_visibility='always'),
|
||||
'type': fields.selection([
|
||||
('recurrent', 'Recurrent'),
|
||||
('oneoff', 'One-Off'),
|
||||
], 'Type of Mandate', required=True, track_visibility='always'),
|
||||
'recurrent_sequence_type': fields.selection([
|
||||
('first', 'First'),
|
||||
('recurring', 'Recurring'),
|
||||
('final', 'Final'),
|
||||
], 'Sequence Type for Next Debit', track_visibility='onchange',
|
||||
help="This field is only used for Recurrent mandates, not for "
|
||||
"One-Off mandates."),
|
||||
'signature_date': fields.date(
|
||||
'Date of Signature of the Mandate', track_visibility='onchange'),
|
||||
'scan': fields.binary('Scan of the Mandate'),
|
||||
'last_debit_date': fields.date(
|
||||
'Date of the Last Debit', readonly=True),
|
||||
'state': fields.selection([
|
||||
('draft', 'Draft'),
|
||||
('valid', 'Valid'),
|
||||
('expired', 'Expired'),
|
||||
('cancel', 'Cancelled'),
|
||||
], 'Status',
|
||||
help="Only valid mandates can be used in a payment line. A "
|
||||
"cancelled mandate is a mandate that has been cancelled by "
|
||||
"the customer. A one-off mandate expires after its first use. "
|
||||
"A recurrent mandate expires after it's final use or if it "
|
||||
"hasn't been used for 36 months."),
|
||||
'payment_line_ids': fields.one2many(
|
||||
'payment.line', 'sdd_mandate_id', "Related Payment Lines"),
|
||||
'sepa_migrated': fields.boolean(
|
||||
'Migrated to SEPA', track_visibility='onchange',
|
||||
help="If this field is not active, the mandate section of the "
|
||||
"next direct debit file that include this mandate will contain "
|
||||
"the 'Original Mandate Identification' and the 'Original "
|
||||
"Creditor Scheme Identification'. This is required in a few "
|
||||
"countries (Belgium for instance), but not in all countries. "
|
||||
"If this is not required in your country, you should keep this "
|
||||
"field always active."),
|
||||
'original_mandate_identification': fields.char(
|
||||
'Original Mandate Identification', size=35,
|
||||
track_visibility='onchange',
|
||||
help="When the field 'Migrated to SEPA' is not active, this "
|
||||
"field will be used as the Original Mandate Identification in "
|
||||
"the Direct Debit file."),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'company_id': lambda self, cr, uid, context:
|
||||
self.pool['res.company']._company_default_get(
|
||||
cr, uid, 'sdd.mandate', context=context),
|
||||
'unique_mandate_reference': '/',
|
||||
'state': 'draft',
|
||||
'sepa_migrated': True,
|
||||
}
|
||||
|
||||
_sql_constraints = [(
|
||||
'mandate_ref_company_uniq',
|
||||
'unique(unique_mandate_reference, company_id)',
|
||||
'A Mandate with the same reference already exists for this company !'
|
||||
)]
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
if vals.get('unique_mandate_reference', '/') == '/':
|
||||
vals['unique_mandate_reference'] = \
|
||||
self.pool['ir.sequence'].next_by_code(
|
||||
cr, uid, 'sdd.mandate.reference', context=context)
|
||||
return super(sdd_mandate, self).create(cr, uid, vals, context=context)
|
||||
|
||||
def _check_sdd_mandate(self, cr, uid, ids):
|
||||
for mandate in self.browse(cr, uid, ids):
|
||||
if (mandate.signature_date and
|
||||
mandate.signature_date >
|
||||
datetime.today().strftime('%Y-%m-%d')):
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The date of signature of mandate '%s' is in the "
|
||||
"future !")
|
||||
% mandate.unique_mandate_reference)
|
||||
if mandate.state == 'valid' and not mandate.signature_date:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("Cannot validate the mandate '%s' without a date of "
|
||||
"signature.")
|
||||
% mandate.unique_mandate_reference)
|
||||
if mandate.state == 'valid' and not mandate.partner_bank_id:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("Cannot validate the mandate '%s' because it is not "
|
||||
"attached to a bank account.")
|
||||
% mandate.unique_mandate_reference)
|
||||
|
||||
if (mandate.signature_date and mandate.last_debit_date and
|
||||
mandate.signature_date > mandate.last_debit_date):
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The mandate '%s' can't have a date of last debit "
|
||||
"before the date of signature.")
|
||||
% mandate.unique_mandate_reference)
|
||||
if (mandate.type == 'recurrent'
|
||||
and not mandate.recurrent_sequence_type):
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The recurrent mandate '%s' must have a sequence type.")
|
||||
% mandate.unique_mandate_reference)
|
||||
if (mandate.type == 'recurrent' and not mandate.sepa_migrated
|
||||
and mandate.recurrent_sequence_type != 'first'):
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The recurrent mandate '%s' which is not marked as "
|
||||
"'Migrated to SEPA' must have its recurrent sequence "
|
||||
"type set to 'First'.")
|
||||
% mandate.unique_mandate_reference)
|
||||
if (mandate.type == 'recurrent' and not mandate.sepa_migrated
|
||||
and not mandate.original_mandate_identification):
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("You must set the 'Original Mandate Identification' "
|
||||
"on the recurrent mandate '%s' which is not marked "
|
||||
"as 'Migrated to SEPA'.")
|
||||
% mandate.unique_mandate_reference)
|
||||
return True
|
||||
|
||||
_constraints = [
|
||||
(_check_sdd_mandate, "Error msg in raise", [
|
||||
'last_debit_date', 'signature_date', 'state', 'partner_bank_id',
|
||||
'type', 'recurrent_sequence_type', 'sepa_migrated',
|
||||
'original_mandate_identification',
|
||||
]),
|
||||
]
|
||||
|
||||
def mandate_type_change(self, cr, uid, ids, type):
|
||||
if type == 'recurrent':
|
||||
recurrent_sequence_type = 'first'
|
||||
else:
|
||||
recurrent_sequence_type = False
|
||||
res = {'value': {'recurrent_sequence_type': recurrent_sequence_type}}
|
||||
return res
|
||||
|
||||
def mandate_partner_bank_change(
|
||||
self, cr, uid, ids, partner_bank_id, type, recurrent_sequence_type,
|
||||
last_debit_date, state):
|
||||
res = {'value': {}}
|
||||
if partner_bank_id:
|
||||
partner_bank_read = self.pool['res.partner.bank'].read(
|
||||
cr, uid, partner_bank_id, ['partner_id'])['partner_id']
|
||||
if partner_bank_read:
|
||||
res['value']['partner_id'] = partner_bank_read[0]
|
||||
if (state == 'valid' and partner_bank_id
|
||||
and type == 'recurrent'
|
||||
and recurrent_sequence_type != 'first'):
|
||||
res['value']['recurrent_sequence_type'] = 'first'
|
||||
res['warning'] = {
|
||||
'title': _('Mandate update'),
|
||||
'message': _(
|
||||
"As you changed the bank account attached to this "
|
||||
"mandate, the 'Sequence Type' has been set back to "
|
||||
"'First'."),
|
||||
}
|
||||
return res
|
||||
|
||||
def validate(self, cr, uid, ids, context=None):
|
||||
to_validate_ids = []
|
||||
for mandate in self.browse(cr, uid, ids, context=context):
|
||||
assert mandate.state == 'draft', 'Mandate should be in draft state'
|
||||
to_validate_ids.append(mandate.id)
|
||||
self.write(
|
||||
cr, uid, to_validate_ids, {'state': 'valid'}, context=context)
|
||||
return True
|
||||
|
||||
def cancel(self, cr, uid, ids, context=None):
|
||||
to_cancel_ids = []
|
||||
for mandate in self.browse(cr, uid, ids, context=context):
|
||||
assert mandate.state in ('draft', 'valid'),\
|
||||
'Mandate should be in draft or valid state'
|
||||
to_cancel_ids.append(mandate.id)
|
||||
self.write(
|
||||
cr, uid, to_cancel_ids, {'state': 'cancel'}, context=context)
|
||||
return True
|
||||
|
||||
def back2draft(self, cr, uid, ids, context=None):
|
||||
to_draft_ids = []
|
||||
for mandate in self.browse(cr, uid, ids, context=context):
|
||||
assert mandate.state == 'cancel',\
|
||||
'Mandate should be in cancel state'
|
||||
to_draft_ids.append(mandate.id)
|
||||
self.write(
|
||||
cr, uid, to_draft_ids, {'state': 'draft'}, context=context)
|
||||
return True
|
||||
|
||||
def _sdd_mandate_set_state_to_expired(self, cr, uid, context=None):
|
||||
logger.info('Searching for SDD Mandates that must be set to Expired')
|
||||
expire_limit_date = datetime.today() + \
|
||||
relativedelta(months=-NUMBER_OF_UNUSED_MONTHS_BEFORE_EXPIRY)
|
||||
expire_limit_date_str = expire_limit_date.strftime('%Y-%m-%d')
|
||||
expired_mandate_ids = self.search(cr, uid, [
|
||||
'|',
|
||||
('last_debit_date', '=', False),
|
||||
('last_debit_date', '<=', expire_limit_date_str),
|
||||
('state', '=', 'valid'),
|
||||
('signature_date', '<=', expire_limit_date_str),
|
||||
], context=context)
|
||||
if expired_mandate_ids:
|
||||
self.write(
|
||||
cr, uid, expired_mandate_ids, {'state': 'expired'},
|
||||
context=context)
|
||||
logger.info(
|
||||
'The following SDD Mandate IDs has been set to expired: %s'
|
||||
% expired_mandate_ids)
|
||||
else:
|
||||
logger.info('0 SDD Mandates must be set to Expired')
|
||||
return True
|
||||
|
||||
|
||||
class res_partner_bank(orm.Model):
|
||||
_inherit = 'res.partner.bank'
|
||||
|
||||
_columns = {
|
||||
'sdd_mandate_ids': fields.one2many(
|
||||
'sdd.mandate', 'partner_bank_id', 'SEPA Direct Debit Mandates'),
|
||||
}
|
||||
|
||||
|
||||
class payment_line(orm.Model):
|
||||
_inherit = 'payment.line'
|
||||
|
||||
_columns = {
|
||||
'sdd_mandate_id': fields.many2one(
|
||||
'sdd.mandate', 'SEPA Direct Debit Mandate',
|
||||
domain=[('state', '=', 'valid')]),
|
||||
}
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
'''If the customer invoice has a mandate, take it
|
||||
otherwise, take the first valid mandate of the bank account'''
|
||||
if context is None:
|
||||
context = {}
|
||||
if not vals:
|
||||
vals = {}
|
||||
partner_bank_id = vals.get('bank_id')
|
||||
move_line_id = vals.get('move_line_id')
|
||||
if (context.get('default_payment_order_type') == 'debit'
|
||||
and 'sdd_mandate_id' not in vals):
|
||||
if move_line_id:
|
||||
line = self.pool['account.move.line'].browse(
|
||||
cr, uid, move_line_id, context=context)
|
||||
if (line.invoice and line.invoice.type == 'out_invoice'
|
||||
and line.invoice.sdd_mandate_id):
|
||||
vals.update({
|
||||
'sdd_mandate_id': line.invoice.sdd_mandate_id.id,
|
||||
'bank_id':
|
||||
line.invoice.sdd_mandate_id.partner_bank_id.id,
|
||||
})
|
||||
if partner_bank_id and 'sdd_mandate_id' not in vals:
|
||||
mandate_ids = self.pool['sdd.mandate'].search(cr, uid, [
|
||||
('partner_bank_id', '=', partner_bank_id),
|
||||
('state', '=', 'valid'),
|
||||
], context=context)
|
||||
if mandate_ids:
|
||||
vals['sdd_mandate_id'] = mandate_ids[0]
|
||||
return super(payment_line, self).create(cr, uid, vals, context=context)
|
||||
|
||||
def _check_mandate_bank_link(self, cr, uid, ids):
|
||||
for payline in self.browse(cr, uid, ids):
|
||||
if (payline.sdd_mandate_id and payline.bank_id
|
||||
and payline.sdd_mandate_id.partner_bank_id.id !=
|
||||
payline.bank_id.id):
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The payment line with reference '%s' has the bank "
|
||||
"account '%s' which is not attached to the mandate "
|
||||
"'%s' (this mandate is attached to the bank account "
|
||||
"'%s').") % (
|
||||
payline.name,
|
||||
self.pool['res.partner.bank'].name_get(
|
||||
cr, uid, [payline.bank_id.id])[0][1],
|
||||
payline.sdd_mandate_id.unique_mandate_reference,
|
||||
self.pool['res.partner.bank'].name_get(
|
||||
cr, uid,
|
||||
[payline.sdd_mandate_id.partner_bank_id.id])[0][1],
|
||||
))
|
||||
return True
|
||||
|
||||
_constraints = [
|
||||
(_check_mandate_bank_link, 'Error msg in raise',
|
||||
['sdd_mandate_id', 'bank_id']),
|
||||
]
|
||||
|
||||
|
||||
class account_invoice(orm.Model):
|
||||
_inherit = 'account.invoice'
|
||||
|
||||
_columns = {
|
||||
'sdd_mandate_id': fields.many2one(
|
||||
'sdd.mandate', 'SEPA Direct Debit Mandate',
|
||||
domain=[('state', '=', 'valid')], readonly=True,
|
||||
states={'draft': [('readonly', False)]})
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_banking_export_sdd_form" model="ir.ui.view">
|
||||
<field name="name">account.banking.export.sdd.form</field>
|
||||
<field name="model">banking.export.sdd</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="SEPA Direct Debit" col="1">
|
||||
<field name="state" widget="statusbar"/>
|
||||
<notebook>
|
||||
<page string="General Information">
|
||||
<group name="main">
|
||||
<field name="total_amount" />
|
||||
<field name="nb_transactions" />
|
||||
<field name="batch_booking" />
|
||||
<field name="charge_bearer"/>
|
||||
<field name="create_date" />
|
||||
<field name="file" filename="filename"/>
|
||||
<field name="filename" invisible="True"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Payment Orders">
|
||||
<field name="payment_order_ids" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="view_banking_export_sdd_tree" model="ir.ui.view">
|
||||
<field name="name">account.banking.export.sdd.tree</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="model">banking.export.sdd</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="SEPA Direct Debit">
|
||||
<field name="filename"/>
|
||||
<field name="create_date"/>
|
||||
<field name="nb_transactions"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_account_banking_sdd" model="ir.actions.act_window">
|
||||
<field name="name">SEPA Direct Debit Files</field>
|
||||
<field name="res_model">banking.export.sdd</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem id="menu_account_banking_sdd"
|
||||
parent="account_payment.menu_main_payment"
|
||||
action="action_account_banking_sdd"
|
||||
sequence="20"
|
||||
/>
|
||||
|
||||
<act_window id="act_banking_export_sdd_payment_order"
|
||||
name="Generated SEPA Direct Debit Files"
|
||||
domain="[('payment_order_ids', '=', active_id)]"
|
||||
res_model="banking.export.sdd"
|
||||
src_model="payment.order"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
22
account_banking_sepa_direct_debit/account_invoice_view.xml
Normal file
22
account_banking_sepa_direct_debit/account_invoice_view.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="invoice_form" model="ir.ui.view">
|
||||
<field name="name">add.sdd.mandate.on.customer.invoice.form</field>
|
||||
<field name="model">account.invoice</field>
|
||||
<field name="inherit_id" ref="account.invoice_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="partner_bank_id" position="after">
|
||||
<field name="sdd_mandate_id" domain="[('partner_id', '=', partner_id), ('state', '=', 'valid')]" attrs="{'invisible': [('type', '=', 'out_refund')]}"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
26
account_banking_sepa_direct_debit/account_payment_view.xml
Normal file
26
account_banking_sepa_direct_debit/account_payment_view.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="sdd_view_payment_order_form" model="ir.ui.view">
|
||||
<field name="name">sdd.payment.order.form</field>
|
||||
<field name="model">payment.order</field>
|
||||
<field name="inherit_id" ref="account_payment.view_payment_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='line_ids']//form//field[@name='bank_id']" position="after">
|
||||
<field name="sdd_mandate_id" domain="[('partner_bank_id', '=', bank_id), ('state', '=', 'valid')]" invisible="context.get('default_payment_order_type')!='debit'" context="{'default_partner_bank_id': bank_id}"/>
|
||||
<newline />
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_id']" position="after">
|
||||
<field name="sdd_mandate_id" string="SDD Mandate" invisible="context.get('default_payment_order_type')!='debit'"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
90
account_banking_sepa_direct_debit/company.py
Normal file
90
account_banking_sepa_direct_debit/company.py
Normal file
@@ -0,0 +1,90 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# SEPA Direct Debit module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class res_company(orm.Model):
|
||||
_inherit = 'res.company'
|
||||
|
||||
_columns = {
|
||||
'sepa_creditor_identifier': fields.char(
|
||||
'SEPA Creditor Identifier', size=35,
|
||||
help="Enter the Creditor Identifier that has been attributed "
|
||||
"to your company to make SEPA Direct Debits. This identifier "
|
||||
"is composed of :\n- your country ISO code (2 letters)\n- a "
|
||||
"2-digits checkum\n- a 3-letters business code\n- a "
|
||||
"country-specific identifier"),
|
||||
'original_creditor_identifier': fields.char(
|
||||
'Original Creditor Identifier', size=70),
|
||||
}
|
||||
|
||||
def is_sepa_creditor_identifier_valid(
|
||||
self, cr, uid, sepa_creditor_identifier, context=None):
|
||||
"""Check if SEPA Creditor Identifier is valid
|
||||
@param sepa_creditor_identifier: SEPA Creditor Identifier as str
|
||||
or unicode
|
||||
@return: True if valid, False otherwise
|
||||
"""
|
||||
if not isinstance(sepa_creditor_identifier, (str, unicode)):
|
||||
return False
|
||||
try:
|
||||
sci_str = str(sepa_creditor_identifier)
|
||||
except:
|
||||
logger.warning(
|
||||
"SEPA Creditor ID should contain only ASCII caracters.")
|
||||
return False
|
||||
sci = sci_str.lower()
|
||||
if len(sci) < 9:
|
||||
return False
|
||||
before_replacement = sci[7:] + sci[0:2] + '00'
|
||||
logger.debug(
|
||||
"SEPA ID check before_replacement = %s" % before_replacement)
|
||||
after_replacement = ''
|
||||
for char in before_replacement:
|
||||
if char.isalpha():
|
||||
after_replacement += str(ord(char)-87)
|
||||
else:
|
||||
after_replacement += char
|
||||
logger.debug(
|
||||
"SEPA ID check after_replacement = %s" % after_replacement)
|
||||
if int(sci[2:4]) == (98 - (int(after_replacement) % 97)):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def _check_sepa_creditor_identifier(self, cr, uid, ids):
|
||||
for company in self.browse(cr, uid, ids):
|
||||
if company.sepa_creditor_identifier:
|
||||
if not self.is_sepa_creditor_identifier_valid(
|
||||
cr, uid, company.sepa_creditor_identifier):
|
||||
return False
|
||||
return True
|
||||
|
||||
_constraints = [
|
||||
(_check_sepa_creditor_identifier,
|
||||
"Invalid SEPA Creditor Identifier.",
|
||||
['sepa_creditor_identifier']),
|
||||
]
|
||||
24
account_banking_sepa_direct_debit/company_view.xml
Normal file
24
account_banking_sepa_direct_debit/company_view.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="sdd_res_company_form" model="ir.ui.view">
|
||||
<field name="name">sepa_direct_debit.res.company.form</field>
|
||||
<field name="type">form</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="inherit_id" ref="account_banking_pain_base.view_company_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<group name="pain" position="inside">
|
||||
<field name="sepa_creditor_identifier"/>
|
||||
<field name="original_creditor_identifier" groups="account_banking_sepa_direct_debit.group_original_mandate_required"/>
|
||||
</group>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
<record id="sdd_mandate_seq_type" model="ir.sequence.type">
|
||||
<field name="name">SDD Mandate Reference</field>
|
||||
<field name="code">sdd.mandate.reference</field>
|
||||
</record>
|
||||
|
||||
<record id="sdd_mandate_seq" model="ir.sequence">
|
||||
<field name="name">SDD Mandate Reference</field>
|
||||
<field name="code">sdd.mandate.reference</field>
|
||||
<field name="prefix">RUM</field>
|
||||
<field name="padding" eval="7"/>
|
||||
<!-- remember that max size for the mandate ref is 35 -->
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
879
account_banking_sepa_direct_debit/data/pain.008.001.02.xsd
Normal file
879
account_banking_sepa_direct_debit/data/pain.008.001.02.xsd
Normal file
@@ -0,0 +1,879 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53-->
|
||||
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
|
||||
<xs:element name="Document" type="Document"/>
|
||||
<xs:complexType name="AccountIdentification4Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="IBAN" type="IBAN2007Identifier"/>
|
||||
<xs:element name="Othr" type="GenericAccountIdentification1"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="AccountSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:fractionDigits value="5"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||
<xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ActiveOrHistoricCurrencyCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{3,3}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="AddressType2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ADDR"/>
|
||||
<xs:enumeration value="PBOX"/>
|
||||
<xs:enumeration value="HOME"/>
|
||||
<xs:enumeration value="BIZZ"/>
|
||||
<xs:enumeration value="MLTO"/>
|
||||
<xs:enumeration value="DLVY"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="AmendmentInformationDetails6">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlMndtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrSchmeId" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgtAcct" type="CashAccount16"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtr" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAcct" type="CashAccount16"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgtAcct" type="CashAccount16"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFnlColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFrqcy" type="Frequency1Code"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="AnyBICIdentifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="Authorisation1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="Authorisation1Code"/>
|
||||
<xs:element name="Prtry" type="Max128Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Authorisation1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUTH"/>
|
||||
<xs:enumeration value="FDET"/>
|
||||
<xs:enumeration value="FSUM"/>
|
||||
<xs:enumeration value="ILEV"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="BICIdentifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="BatchBookingIndicator">
|
||||
<xs:restriction base="xs:boolean"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="BranchAndFinancialInstitutionIdentification4">
|
||||
<xs:sequence>
|
||||
<xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BranchData2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CashAccount16">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="AccountIdentification4Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CashAccountType2">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="CashAccountType4Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="CashAccountType4Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CASH"/>
|
||||
<xs:enumeration value="CHAR"/>
|
||||
<xs:enumeration value="COMM"/>
|
||||
<xs:enumeration value="TAXE"/>
|
||||
<xs:enumeration value="CISH"/>
|
||||
<xs:enumeration value="TRAS"/>
|
||||
<xs:enumeration value="SACC"/>
|
||||
<xs:enumeration value="CACC"/>
|
||||
<xs:enumeration value="SVGS"/>
|
||||
<xs:enumeration value="ONDP"/>
|
||||
<xs:enumeration value="MGLD"/>
|
||||
<xs:enumeration value="NREX"/>
|
||||
<xs:enumeration value="MOMA"/>
|
||||
<xs:enumeration value="LOAN"/>
|
||||
<xs:enumeration value="SLRY"/>
|
||||
<xs:enumeration value="ODFT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CategoryPurpose1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ChargeBearerType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEBT"/>
|
||||
<xs:enumeration value="CRED"/>
|
||||
<xs:enumeration value="SHAR"/>
|
||||
<xs:enumeration value="SLEV"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ClearingSystemIdentification2Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ClearingSystemMemberIdentification2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysId" type="ClearingSystemIdentification2Choice"/>
|
||||
<xs:element name="MmbId" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ContactDetails2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="CountryCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2,2}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="CreditDebitCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CRDT"/>
|
||||
<xs:enumeration value="DBIT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CreditorReferenceInformation2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CreditorReferenceType2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ref" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorReferenceType1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="DocumentType3Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorReferenceType2">
|
||||
<xs:sequence>
|
||||
<xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CustomerDirectDebitInitiationV02">
|
||||
<xs:sequence>
|
||||
<xs:element name="GrpHdr" type="GroupHeader39"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstructionInformation4"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateAndPlaceOfBirth">
|
||||
<xs:sequence>
|
||||
<xs:element name="BirthDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/>
|
||||
<xs:element name="CityOfBirth" type="Max35Text"/>
|
||||
<xs:element name="CtryOfBirth" type="CountryCode"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DatePeriodDetails">
|
||||
<xs:sequence>
|
||||
<xs:element name="FrDt" type="ISODate"/>
|
||||
<xs:element name="ToDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DecimalNumber">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="17"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DirectDebitTransaction6">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MndtRltdInf" type="MandateRelatedInformation6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DirectDebitTransactionInformation9">
|
||||
<xs:sequence>
|
||||
<xs:element name="PmtId" type="PaymentIdentification1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation20"/>
|
||||
<xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DrctDbtTx" type="DirectDebitTransaction6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification32"/>
|
||||
<xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount16"/>
|
||||
<xs:element name="Dbtr" type="PartyIdentification32"/>
|
||||
<xs:element name="DbtrAcct" type="CashAccount16"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrForCdtrAgt" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Purp" type="Purpose2Choice"/>
|
||||
<xs:element maxOccurs="10" minOccurs="0" name="RgltryRptg" type="RegulatoryReporting3"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tax" type="TaxInformation3"/>
|
||||
<xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation5"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="Document">
|
||||
<xs:sequence>
|
||||
<xs:element name="CstmrDrctDbtInitn" type="CustomerDirectDebitInitiationV02"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentAdjustment1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max4Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DocumentType3Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="RADM"/>
|
||||
<xs:enumeration value="RPIN"/>
|
||||
<xs:enumeration value="FXDR"/>
|
||||
<xs:enumeration value="DISP"/>
|
||||
<xs:enumeration value="PUOR"/>
|
||||
<xs:enumeration value="SCOR"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="DocumentType5Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="MSIN"/>
|
||||
<xs:enumeration value="CNFA"/>
|
||||
<xs:enumeration value="DNFA"/>
|
||||
<xs:enumeration value="CINV"/>
|
||||
<xs:enumeration value="CREN"/>
|
||||
<xs:enumeration value="DEBN"/>
|
||||
<xs:enumeration value="HIRI"/>
|
||||
<xs:enumeration value="SBIN"/>
|
||||
<xs:enumeration value="CMCN"/>
|
||||
<xs:enumeration value="SOAC"/>
|
||||
<xs:enumeration value="DISP"/>
|
||||
<xs:enumeration value="BOLD"/>
|
||||
<xs:enumeration value="VCHR"/>
|
||||
<xs:enumeration value="AROI"/>
|
||||
<xs:enumeration value="TSUT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalAccountIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalCategoryPurpose1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalClearingSystemIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="5"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalLocalInstrument1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="35"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalOrganisationIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalPersonIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalPurpose1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalServiceLevel1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="FinancialIdentificationSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FinancialInstitutionIdentification7">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BIC" type="BICIdentifier"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Frequency1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="YEAR"/>
|
||||
<xs:enumeration value="MNTH"/>
|
||||
<xs:enumeration value="QURT"/>
|
||||
<xs:enumeration value="MIAN"/>
|
||||
<xs:enumeration value="WEEK"/>
|
||||
<xs:enumeration value="DAIL"/>
|
||||
<xs:enumeration value="ADHO"/>
|
||||
<xs:enumeration value="INDA"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="GenericAccountIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max34Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericFinancialIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="FinancialIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericOrganisationIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericPersonIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GroupHeader39">
|
||||
<xs:sequence>
|
||||
<xs:element name="MsgId" type="Max35Text"/>
|
||||
<xs:element name="CreDtTm" type="ISODateTime"/>
|
||||
<xs:element maxOccurs="2" minOccurs="0" name="Authstn" type="Authorisation1Choice"/>
|
||||
<xs:element name="NbOfTxs" type="Max15NumericText"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||
<xs:element name="InitgPty" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="IBAN2007Identifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ISODate">
|
||||
<xs:restriction base="xs:date"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ISODateTime">
|
||||
<xs:restriction base="xs:dateTime"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="LocalInstrument2Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="MandateRelatedInformation6">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DtOfSgntr" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInd" type="TrueFalseIndicator"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInfDtls" type="AmendmentInformationDetails6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ElctrncSgntr" type="Max1025Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrstColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FnlColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Frqcy" type="Frequency1Code"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Max1025Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="1025"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max10Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="10"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max128Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="128"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max140Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="140"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max15NumericText">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]{1,15}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max16Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="16"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max2048Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="2048"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max34Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="34"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max35Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="35"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max4Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max70Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="70"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="NameAndAddress10">
|
||||
<xs:sequence>
|
||||
<xs:element name="Nm" type="Max140Text"/>
|
||||
<xs:element name="Adr" type="PostalAddress6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="NamePrefix1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DOCT"/>
|
||||
<xs:enumeration value="MIST"/>
|
||||
<xs:enumeration value="MISS"/>
|
||||
<xs:enumeration value="MADM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Number">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="0"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="OrganisationIdentification4">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BICOrBEI" type="AnyBICIdentifier"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="OrganisationIdentificationSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="Party6Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="OrgId" type="OrganisationIdentification4"/>
|
||||
<xs:element name="PrvtId" type="PersonIdentification5"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PartyIdentification32">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party6Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PaymentIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="Max35Text"/>
|
||||
<xs:element name="EndToEndId" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PaymentInstructionInformation4">
|
||||
<xs:sequence>
|
||||
<xs:element name="PmtInfId" type="Max35Text"/>
|
||||
<xs:element name="PmtMtd" type="PaymentMethod2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BtchBookg" type="BatchBookingIndicator"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="NbOfTxs" type="Max15NumericText"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation20"/>
|
||||
<xs:element name="ReqdColltnDt" type="ISODate"/>
|
||||
<xs:element name="Cdtr" type="PartyIdentification32"/>
|
||||
<xs:element name="CdtrAcct" type="CashAccount16"/>
|
||||
<xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount16"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct" type="CashAccount16"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification4"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="DrctDbtTxInf" type="DirectDebitTransactionInformation9"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PaymentMethod2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DD"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PaymentTypeInformation20">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SvcLvl" type="ServiceLevel8Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="LclInstrm" type="LocalInstrument2Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SeqTp" type="SequenceType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp" type="CategoryPurpose1Choice"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PercentageRate">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="10"/>
|
||||
<xs:totalDigits value="11"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PersonIdentification5">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PersonIdentificationSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PhoneNumber">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PostalAddress6">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="Max16Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="Max16Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
<xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="Max70Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Priority2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="HIGH"/>
|
||||
<xs:enumeration value="NORM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="Purpose2Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalPurpose1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentInformation3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentType1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="DocumentType5Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentType2">
|
||||
<xs:sequence>
|
||||
<xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RegulatoryAuthority2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RegulatoryReporting3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtCdtRptgInd" type="RegulatoryReportingType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Authrty" type="RegulatoryAuthority2"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="StructuredRegulatoryReporting3"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="RegulatoryReportingType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CRED"/>
|
||||
<xs:enumeration value="DEBT"/>
|
||||
<xs:enumeration value="BOTH"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="RemittanceAmount1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RemittanceInformation5">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation7"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RemittanceLocation2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnMtd" type="RemittanceLocationMethod2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnElctrncAdr" type="Max2048Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnPstlAdr" type="NameAndAddress10"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="RemittanceLocationMethod2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="FAXI"/>
|
||||
<xs:enumeration value="EDIC"/>
|
||||
<xs:enumeration value="URID"/>
|
||||
<xs:enumeration value="EMAL"/>
|
||||
<xs:enumeration value="POST"/>
|
||||
<xs:enumeration value="SMSM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="SequenceType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="FRST"/>
|
||||
<xs:enumeration value="RCUR"/>
|
||||
<xs:enumeration value="FNAL"/>
|
||||
<xs:enumeration value="OOFF"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ServiceLevel8Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalServiceLevel1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructuredRegulatoryReporting3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Cd" type="Max10Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Inf" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructuredRemittanceInformation7">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation3"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt" type="RemittanceAmount1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf" type="CreditorReferenceInformation2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Invcr" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification32"/>
|
||||
<xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAmount1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Rate" type="PercentageRate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="TaxRecordDetails1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAuthorisation1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Titl" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxInformation3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="TaxParty1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dbtr" type="TaxParty2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AdmstnZn" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RefNb" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Mtd" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SeqNb" type="Number"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd" type="TaxRecord1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxParty1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxParty2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Authstn" type="TaxAuthorisation1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxPeriod1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Yr" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxRecordPeriod1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DatePeriodDetails"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRecord1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctgy" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtgyDtls" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtrSts" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CertId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrmsCd" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRecordDetails1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="TaxRecordPeriod1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="MM01"/>
|
||||
<xs:enumeration value="MM02"/>
|
||||
<xs:enumeration value="MM03"/>
|
||||
<xs:enumeration value="MM04"/>
|
||||
<xs:enumeration value="MM05"/>
|
||||
<xs:enumeration value="MM06"/>
|
||||
<xs:enumeration value="MM07"/>
|
||||
<xs:enumeration value="MM08"/>
|
||||
<xs:enumeration value="MM09"/>
|
||||
<xs:enumeration value="MM10"/>
|
||||
<xs:enumeration value="MM11"/>
|
||||
<xs:enumeration value="MM12"/>
|
||||
<xs:enumeration value="QTR1"/>
|
||||
<xs:enumeration value="QTR2"/>
|
||||
<xs:enumeration value="QTR3"/>
|
||||
<xs:enumeration value="QTR4"/>
|
||||
<xs:enumeration value="HLF1"/>
|
||||
<xs:enumeration value="HLF2"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="TrueFalseIndicator">
|
||||
<xs:restriction base="xs:boolean"/>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
925
account_banking_sepa_direct_debit/data/pain.008.001.03.xsd
Normal file
925
account_banking_sepa_direct_debit/data/pain.008.001.03.xsd
Normal file
@@ -0,0 +1,925 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--Generated by SWIFTStandards Workstation (build:R7.1.30.4) on 2012 Jun 07 20:47:19-->
|
||||
<xs:schema elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.008.001.03" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.03" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="Document" type="Document"/>
|
||||
<xs:complexType name="AccountIdentification4Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="IBAN" type="IBAN2007Identifier"/>
|
||||
<xs:element name="Othr" type="GenericAccountIdentification1"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="AccountSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="5"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
<xs:minInclusive value="0"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||
<xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ActiveOrHistoricCurrencyCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{3,3}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="AddressType2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ADDR"/>
|
||||
<xs:enumeration value="PBOX"/>
|
||||
<xs:enumeration value="HOME"/>
|
||||
<xs:enumeration value="BIZZ"/>
|
||||
<xs:enumeration value="MLTO"/>
|
||||
<xs:enumeration value="DLVY"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="AmendmentInformationDetails8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlMndtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrSchmeId" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFnlColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFrqcy" type="Frequency6Code"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="AnyBICIdentifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="Authorisation1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="Authorisation1Code"/>
|
||||
<xs:element name="Prtry" type="Max128Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Authorisation1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUTH"/>
|
||||
<xs:enumeration value="FDET"/>
|
||||
<xs:enumeration value="FSUM"/>
|
||||
<xs:enumeration value="ILEV"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="BICFIIdentifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="BatchBookingIndicator">
|
||||
<xs:restriction base="xs:boolean"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="BranchAndFinancialInstitutionIdentification5">
|
||||
<xs:sequence>
|
||||
<xs:element name="FinInstnId" type="FinancialInstitutionIdentification8"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BranchData2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CashAccount24">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="AccountIdentification4Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CashAccountType2Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalCashAccountType1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CategoryPurpose1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ChargeBearerType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEBT"/>
|
||||
<xs:enumeration value="CRED"/>
|
||||
<xs:enumeration value="SHAR"/>
|
||||
<xs:enumeration value="SLEV"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ClearingSystemIdentification2Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ClearingSystemMemberIdentification2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysId" type="ClearingSystemIdentification2Choice"/>
|
||||
<xs:element name="MmbId" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ContactDetails2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="CountryCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2,2}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="CreditDebitCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CRDT"/>
|
||||
<xs:enumeration value="DBIT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CreditorReferenceInformation2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CreditorReferenceType2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ref" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorReferenceType1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="DocumentType3Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorReferenceType2">
|
||||
<xs:sequence>
|
||||
<xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CustomerDirectDebitInitiationV03">
|
||||
<xs:sequence>
|
||||
<xs:element name="GrpHdr" type="GroupHeader55"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstruction7"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData" type="SupplementaryData1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateAndPlaceOfBirth">
|
||||
<xs:sequence>
|
||||
<xs:element name="BirthDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/>
|
||||
<xs:element name="CityOfBirth" type="Max35Text"/>
|
||||
<xs:element name="CtryOfBirth" type="CountryCode"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DatePeriodDetails">
|
||||
<xs:sequence>
|
||||
<xs:element name="FrDt" type="ISODate"/>
|
||||
<xs:element name="ToDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DecimalNumber">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="17"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DirectDebitTransaction7">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MndtRltdInf" type="MandateRelatedInformation8"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DirectDebitTransactionInformation11">
|
||||
<xs:sequence>
|
||||
<xs:element name="PmtId" type="PaymentIdentification1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation24"/>
|
||||
<xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DrctDbtTx" type="DirectDebitTransaction7"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification43"/>
|
||||
<xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element name="Dbtr" type="PartyIdentification43"/>
|
||||
<xs:element name="DbtrAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrForCdtrAgt" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Purp" type="Purpose2Choice"/>
|
||||
<xs:element maxOccurs="10" minOccurs="0" name="RgltryRptg" type="RegulatoryReporting3"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tax" type="TaxInformation3"/>
|
||||
<xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation7"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DiscountAmountAndType1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="DiscountAmountType1Choice"/>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DiscountAmountType1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalDiscountAmountType1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="Document">
|
||||
<xs:sequence>
|
||||
<xs:element name="CstmrDrctDbtInitn" type="CustomerDirectDebitInitiationV03"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentAdjustment1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max4Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DocumentType3Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="RADM"/>
|
||||
<xs:enumeration value="RPIN"/>
|
||||
<xs:enumeration value="FXDR"/>
|
||||
<xs:enumeration value="DISP"/>
|
||||
<xs:enumeration value="PUOR"/>
|
||||
<xs:enumeration value="SCOR"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="DocumentType5Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="MSIN"/>
|
||||
<xs:enumeration value="CNFA"/>
|
||||
<xs:enumeration value="DNFA"/>
|
||||
<xs:enumeration value="CINV"/>
|
||||
<xs:enumeration value="CREN"/>
|
||||
<xs:enumeration value="DEBN"/>
|
||||
<xs:enumeration value="HIRI"/>
|
||||
<xs:enumeration value="SBIN"/>
|
||||
<xs:enumeration value="CMCN"/>
|
||||
<xs:enumeration value="SOAC"/>
|
||||
<xs:enumeration value="DISP"/>
|
||||
<xs:enumeration value="BOLD"/>
|
||||
<xs:enumeration value="VCHR"/>
|
||||
<xs:enumeration value="AROI"/>
|
||||
<xs:enumeration value="TSUT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalAccountIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalCashAccountType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalCategoryPurpose1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalClearingSystemIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="5"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalDiscountAmountType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalLocalInstrument1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="35"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalOrganisationIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalPersonIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalPurpose1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalServiceLevel1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalTaxAmountType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="FinancialIdentificationSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FinancialInstitutionIdentification8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BICFI" type="BICFIIdentifier"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Frequency6Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="YEAR"/>
|
||||
<xs:enumeration value="MNTH"/>
|
||||
<xs:enumeration value="QURT"/>
|
||||
<xs:enumeration value="MIAN"/>
|
||||
<xs:enumeration value="WEEK"/>
|
||||
<xs:enumeration value="DAIL"/>
|
||||
<xs:enumeration value="ADHO"/>
|
||||
<xs:enumeration value="INDA"/>
|
||||
<xs:enumeration value="FRTN"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="GenericAccountIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max34Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericFinancialIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="FinancialIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericOrganisationIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericPersonIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GroupHeader55">
|
||||
<xs:sequence>
|
||||
<xs:element name="MsgId" type="Max35Text"/>
|
||||
<xs:element name="CreDtTm" type="ISODateTime"/>
|
||||
<xs:element maxOccurs="2" minOccurs="0" name="Authstn" type="Authorisation1Choice"/>
|
||||
<xs:element name="NbOfTxs" type="Max15NumericText"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||
<xs:element name="InitgPty" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="IBAN2007Identifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ISODate">
|
||||
<xs:restriction base="xs:date"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ISODateTime">
|
||||
<xs:restriction base="xs:dateTime"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="LocalInstrument2Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="MandateRelatedInformation8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DtOfSgntr" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInd" type="TrueFalseIndicator"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInfDtls" type="AmendmentInformationDetails8"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ElctrncSgntr" type="Max1025Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrstColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FnlColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Frqcy" type="Frequency6Code"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Max1025Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="1025"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max10Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="10"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max128Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="128"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max140Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="140"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max15NumericText">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]{1,15}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max16Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="16"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max2048Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="2048"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max34Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="34"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max350Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="350"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max35Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="35"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max4Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max70Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="70"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="NameAndAddress10">
|
||||
<xs:sequence>
|
||||
<xs:element name="Nm" type="Max140Text"/>
|
||||
<xs:element name="Adr" type="PostalAddress6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="NamePrefix1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DOCT"/>
|
||||
<xs:enumeration value="MIST"/>
|
||||
<xs:enumeration value="MISS"/>
|
||||
<xs:enumeration value="MADM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Number">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="0"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="OrganisationIdentification8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AnyBIC" type="AnyBICIdentifier"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="OrganisationIdentificationSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="Party11Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="OrgId" type="OrganisationIdentification8"/>
|
||||
<xs:element name="PrvtId" type="PersonIdentification5"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PartyIdentification43">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party11Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PaymentIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="Max35Text"/>
|
||||
<xs:element name="EndToEndId" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PaymentInstruction7">
|
||||
<xs:sequence>
|
||||
<xs:element name="PmtInfId" type="Max35Text"/>
|
||||
<xs:element name="PmtMtd" type="PaymentMethod2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BtchBookg" type="BatchBookingIndicator"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="NbOfTxs" type="Max15NumericText"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation24"/>
|
||||
<xs:element name="ReqdColltnDt" type="ISODate"/>
|
||||
<xs:element name="Cdtr" type="PartyIdentification43"/>
|
||||
<xs:element name="CdtrAcct" type="CashAccount24"/>
|
||||
<xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="DrctDbtTxInf" type="DirectDebitTransactionInformation11"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PaymentMethod2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DD"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PaymentTypeInformation24">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SvcLvl" type="ServiceLevel8Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="LclInstrm" type="LocalInstrument2Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SeqTp" type="SequenceType3Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp" type="CategoryPurpose1Choice"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PercentageRate">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="10"/>
|
||||
<xs:totalDigits value="11"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PersonIdentification5">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PersonIdentificationSchemeName1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PhoneNumber">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PostalAddress6">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="Max16Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="Max16Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
<xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="Max70Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Priority2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="HIGH"/>
|
||||
<xs:enumeration value="NORM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="Purpose2Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalPurpose1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentInformation3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentType1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="DocumentType5Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentType2">
|
||||
<xs:sequence>
|
||||
<xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RegulatoryAuthority2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RegulatoryReporting3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtCdtRptgInd" type="RegulatoryReportingType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Authrty" type="RegulatoryAuthority2"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="StructuredRegulatoryReporting3"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="RegulatoryReportingType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CRED"/>
|
||||
<xs:enumeration value="DEBT"/>
|
||||
<xs:enumeration value="BOTH"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="RemittanceAmount2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="DscntApldAmt" type="DiscountAmountAndType1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="TaxAmt" type="TaxAmountAndType1"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RemittanceInformation7">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation9"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RemittanceLocation2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnMtd" type="RemittanceLocationMethod2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnElctrncAdr" type="Max2048Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnPstlAdr" type="NameAndAddress10"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="RemittanceLocationMethod2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="FAXI"/>
|
||||
<xs:enumeration value="EDIC"/>
|
||||
<xs:enumeration value="URID"/>
|
||||
<xs:enumeration value="EMAL"/>
|
||||
<xs:enumeration value="POST"/>
|
||||
<xs:enumeration value="SMSM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="SequenceType3Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="FRST"/>
|
||||
<xs:enumeration value="RCUR"/>
|
||||
<xs:enumeration value="FNAL"/>
|
||||
<xs:enumeration value="OOFF"/>
|
||||
<xs:enumeration value="RPRE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ServiceLevel8Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalServiceLevel1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructuredRegulatoryReporting3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Cd" type="Max10Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Inf" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructuredRemittanceInformation9">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation3"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt" type="RemittanceAmount2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf" type="CreditorReferenceInformation2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Invcr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplementaryData1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PlcAndNm" type="Max350Text"/>
|
||||
<xs:element name="Envlp" type="SupplementaryDataEnvelope1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplementaryDataEnvelope1">
|
||||
<xs:sequence>
|
||||
<xs:any namespace="##any" processContents="lax"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAmount1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Rate" type="PercentageRate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="TaxRecordDetails1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAmountAndType1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxAmountType1Choice"/>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAmountType1Choice">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalTaxAmountType1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAuthorisation1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Titl" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxInformation3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="TaxParty1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dbtr" type="TaxParty2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AdmstnZn" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RefNb" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Mtd" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SeqNb" type="Number"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd" type="TaxRecord1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxParty1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxParty2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Authstn" type="TaxAuthorisation1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxPeriod1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Yr" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxRecordPeriod1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DatePeriodDetails"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRecord1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctgy" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtgyDtls" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtrSts" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CertId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrmsCd" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRecordDetails1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="TaxRecordPeriod1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="MM01"/>
|
||||
<xs:enumeration value="MM02"/>
|
||||
<xs:enumeration value="MM03"/>
|
||||
<xs:enumeration value="MM04"/>
|
||||
<xs:enumeration value="MM05"/>
|
||||
<xs:enumeration value="MM06"/>
|
||||
<xs:enumeration value="MM07"/>
|
||||
<xs:enumeration value="MM08"/>
|
||||
<xs:enumeration value="MM09"/>
|
||||
<xs:enumeration value="MM10"/>
|
||||
<xs:enumeration value="MM11"/>
|
||||
<xs:enumeration value="MM12"/>
|
||||
<xs:enumeration value="QTR1"/>
|
||||
<xs:enumeration value="QTR2"/>
|
||||
<xs:enumeration value="QTR3"/>
|
||||
<xs:enumeration value="QTR4"/>
|
||||
<xs:enumeration value="HLF1"/>
|
||||
<xs:enumeration value="HLF2"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="TrueFalseIndicator">
|
||||
<xs:restriction base="xs:boolean"/>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
892
account_banking_sepa_direct_debit/data/pain.008.001.04.xsd
Normal file
892
account_banking_sepa_direct_debit/data/pain.008.001.04.xsd
Normal file
@@ -0,0 +1,892 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--Generated by Standards Editor (build:R1.0.41.3) on 2013 Mar 05 13:39:40, ISO 20022 version : 2013-->
|
||||
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04">
|
||||
<xs:element name="Document" type="Document"/>
|
||||
<xs:complexType name="AccountIdentification4Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="IBAN" type="IBAN2007Identifier"/>
|
||||
<xs:element name="Othr" type="GenericAccountIdentification1"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="AccountSchemeName1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="5"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
<xs:minInclusive value="0"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
|
||||
<xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ActiveOrHistoricCurrencyCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{3,3}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="AddressType2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ADDR"/>
|
||||
<xs:enumeration value="PBOX"/>
|
||||
<xs:enumeration value="HOME"/>
|
||||
<xs:enumeration value="BIZZ"/>
|
||||
<xs:enumeration value="MLTO"/>
|
||||
<xs:enumeration value="DLVY"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="AmendmentInformationDetails8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlMndtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrSchmeId" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFnlColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="OrgnlFrqcy" type="Frequency6Code"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="AnyBICIdentifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="Authorisation1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="Authorisation1Code"/>
|
||||
<xs:element name="Prtry" type="Max128Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Authorisation1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUTH"/>
|
||||
<xs:enumeration value="FDET"/>
|
||||
<xs:enumeration value="FSUM"/>
|
||||
<xs:enumeration value="ILEV"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="BICFIIdentifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="BatchBookingIndicator">
|
||||
<xs:restriction base="xs:boolean"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="BranchAndFinancialInstitutionIdentification5">
|
||||
<xs:sequence>
|
||||
<xs:element name="FinInstnId" type="FinancialInstitutionIdentification8"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BranchData2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CashAccount24">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="AccountIdentification4Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CashAccountType2Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalCashAccountType1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CategoryPurpose1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ChargeBearerType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEBT"/>
|
||||
<xs:enumeration value="CRED"/>
|
||||
<xs:enumeration value="SHAR"/>
|
||||
<xs:enumeration value="SLEV"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ClearingSystemIdentification2Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ClearingSystemMemberIdentification2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysId" type="ClearingSystemIdentification2Choice"/>
|
||||
<xs:element name="MmbId" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ContactDetails2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="CountryCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2,2}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="CreditDebitCode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CRDT"/>
|
||||
<xs:enumeration value="DBIT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CreditorReferenceInformation2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CreditorReferenceType2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ref" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorReferenceType1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="DocumentType3Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorReferenceType2">
|
||||
<xs:sequence>
|
||||
<xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CustomerDirectDebitInitiationV04">
|
||||
<xs:sequence>
|
||||
<xs:element name="GrpHdr" type="GroupHeader55"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstruction10"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData" type="SupplementaryData1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateAndPlaceOfBirth">
|
||||
<xs:sequence>
|
||||
<xs:element name="BirthDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/>
|
||||
<xs:element name="CityOfBirth" type="Max35Text"/>
|
||||
<xs:element name="CtryOfBirth" type="CountryCode"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DatePeriodDetails">
|
||||
<xs:sequence>
|
||||
<xs:element name="FrDt" type="ISODate"/>
|
||||
<xs:element name="ToDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DecimalNumber">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="17"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DirectDebitTransaction7">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MndtRltdInf" type="MandateRelatedInformation8"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DirectDebitTransactionInformation13">
|
||||
<xs:sequence>
|
||||
<xs:element name="PmtId" type="PaymentIdentification1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation24"/>
|
||||
<xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DrctDbtTx" type="DirectDebitTransaction7"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification43"/>
|
||||
<xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element name="Dbtr" type="PartyIdentification43"/>
|
||||
<xs:element name="DbtrAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrForCdtrAgt" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Purp" type="Purpose2Choice"/>
|
||||
<xs:element maxOccurs="10" minOccurs="0" name="RgltryRptg" type="RegulatoryReporting3"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tax" type="TaxInformation3"/>
|
||||
<xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation7"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData" type="SupplementaryData1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DiscountAmountAndType1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="DiscountAmountType1Choice"/>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DiscountAmountType1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalDiscountAmountType1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="Document">
|
||||
<xs:sequence>
|
||||
<xs:element name="CstmrDrctDbtInitn" type="CustomerDirectDebitInitiationV04"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentAdjustment1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max4Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DocumentType3Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="RADM"/>
|
||||
<xs:enumeration value="RPIN"/>
|
||||
<xs:enumeration value="FXDR"/>
|
||||
<xs:enumeration value="DISP"/>
|
||||
<xs:enumeration value="PUOR"/>
|
||||
<xs:enumeration value="SCOR"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="DocumentType5Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="MSIN"/>
|
||||
<xs:enumeration value="CNFA"/>
|
||||
<xs:enumeration value="DNFA"/>
|
||||
<xs:enumeration value="CINV"/>
|
||||
<xs:enumeration value="CREN"/>
|
||||
<xs:enumeration value="DEBN"/>
|
||||
<xs:enumeration value="HIRI"/>
|
||||
<xs:enumeration value="SBIN"/>
|
||||
<xs:enumeration value="CMCN"/>
|
||||
<xs:enumeration value="SOAC"/>
|
||||
<xs:enumeration value="DISP"/>
|
||||
<xs:enumeration value="BOLD"/>
|
||||
<xs:enumeration value="VCHR"/>
|
||||
<xs:enumeration value="AROI"/>
|
||||
<xs:enumeration value="TSUT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalAccountIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalCashAccountType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalCategoryPurpose1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalClearingSystemIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="5"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalDiscountAmountType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalLocalInstrument1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="35"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalOrganisationIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalPersonIdentification1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalPurpose1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalServiceLevel1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ExternalTaxAmountType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="FinancialIdentificationSchemeName1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FinancialInstitutionIdentification8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BICFI" type="BICFIIdentifier"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Frequency6Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="YEAR"/>
|
||||
<xs:enumeration value="MNTH"/>
|
||||
<xs:enumeration value="QURT"/>
|
||||
<xs:enumeration value="MIAN"/>
|
||||
<xs:enumeration value="WEEK"/>
|
||||
<xs:enumeration value="DAIL"/>
|
||||
<xs:enumeration value="ADHO"/>
|
||||
<xs:enumeration value="INDA"/>
|
||||
<xs:enumeration value="FRTN"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="GenericAccountIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max34Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericFinancialIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="FinancialIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericOrganisationIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GenericPersonIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element name="Id" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="GroupHeader55">
|
||||
<xs:sequence>
|
||||
<xs:element name="MsgId" type="Max35Text"/>
|
||||
<xs:element name="CreDtTm" type="ISODateTime"/>
|
||||
<xs:element maxOccurs="2" minOccurs="0" name="Authstn" type="Authorisation1Choice"/>
|
||||
<xs:element name="NbOfTxs" type="Max15NumericText"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||
<xs:element name="InitgPty" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="IBAN2007Identifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ISODate">
|
||||
<xs:restriction base="xs:date"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ISODateTime">
|
||||
<xs:restriction base="xs:dateTime"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="LocalInstrument2Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="MandateRelatedInformation8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DtOfSgntr" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInd" type="TrueFalseIndicator"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AmdmntInfDtls" type="AmendmentInformationDetails8"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ElctrncSgntr" type="Max1025Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrstColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FnlColltnDt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Frqcy" type="Frequency6Code"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Max1025Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="1025"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max10Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="10"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max128Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="128"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max140Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="140"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max15NumericText">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9]{1,15}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max16Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="16"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max2048Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="2048"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max34Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="34"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max350Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="350"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max35Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="35"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max4Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="4"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Max70Text">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="70"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="NameAndAddress10">
|
||||
<xs:sequence>
|
||||
<xs:element name="Nm" type="Max140Text"/>
|
||||
<xs:element name="Adr" type="PostalAddress6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="NamePrefix1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DOCT"/>
|
||||
<xs:enumeration value="MIST"/>
|
||||
<xs:enumeration value="MISS"/>
|
||||
<xs:enumeration value="MADM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Number">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="0"/>
|
||||
<xs:totalDigits value="18"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="OrganisationIdentification8">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AnyBIC" type="AnyBICIdentifier"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="OrganisationIdentificationSchemeName1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="Party11Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="OrgId" type="OrganisationIdentification8"/>
|
||||
<xs:element name="PrvtId" type="PersonIdentification5"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PartyIdentification43">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party11Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PaymentIdentification1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="Max35Text"/>
|
||||
<xs:element name="EndToEndId" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PaymentInstruction10">
|
||||
<xs:sequence>
|
||||
<xs:element name="PmtInfId" type="Max35Text"/>
|
||||
<xs:element name="PmtMtd" type="PaymentMethod2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BtchBookg" type="BatchBookingIndicator"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="NbOfTxs" type="Max15NumericText"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation24"/>
|
||||
<xs:element name="ReqdColltnDt" type="ISODate"/>
|
||||
<xs:element name="Cdtr" type="PartyIdentification43"/>
|
||||
<xs:element name="CdtrAcct" type="CashAccount24"/>
|
||||
<xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct" type="CashAccount24"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification5"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="DrctDbtTxInf" type="DirectDebitTransactionInformation13"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PaymentMethod2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DD"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PaymentTypeInformation24">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SvcLvl" type="ServiceLevel8Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="LclInstrm" type="LocalInstrument2Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SeqTp" type="SequenceType3Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp" type="CategoryPurpose1Choice"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PercentageRate">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:fractionDigits value="10"/>
|
||||
<xs:totalDigits value="11"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PersonIdentification5">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PersonIdentificationSchemeName1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PhoneNumber">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PostalAddress6">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="Max70Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="Max16Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="Max16Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
<xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="Max70Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="Priority2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="HIGH"/>
|
||||
<xs:enumeration value="NORM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="Purpose2Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalPurpose1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentInformation3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentType1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="DocumentType5Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferredDocumentType2">
|
||||
<xs:sequence>
|
||||
<xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RegulatoryAuthority2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RegulatoryReporting3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtCdtRptgInd" type="RegulatoryReportingType1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Authrty" type="RegulatoryAuthority2"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="StructuredRegulatoryReporting3"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="RegulatoryReportingType1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="CRED"/>
|
||||
<xs:enumeration value="DEBT"/>
|
||||
<xs:enumeration value="BOTH"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="RemittanceAmount2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="DscntApldAmt" type="DiscountAmountAndType1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="TaxAmt" type="TaxAmountAndType1"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RemittanceInformation7">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation9"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RemittanceLocation2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnMtd" type="RemittanceLocationMethod2Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnElctrncAdr" type="Max2048Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RmtLctnPstlAdr" type="NameAndAddress10"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="RemittanceLocationMethod2Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="FAXI"/>
|
||||
<xs:enumeration value="EDIC"/>
|
||||
<xs:enumeration value="URID"/>
|
||||
<xs:enumeration value="EMAL"/>
|
||||
<xs:enumeration value="POST"/>
|
||||
<xs:enumeration value="SMSM"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="SequenceType3Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="FRST"/>
|
||||
<xs:enumeration value="RCUR"/>
|
||||
<xs:enumeration value="FNAL"/>
|
||||
<xs:enumeration value="OOFF"/>
|
||||
<xs:enumeration value="RPRE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ServiceLevel8Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalServiceLevel1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructuredRegulatoryReporting3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Cd" type="Max10Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Inf" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructuredRemittanceInformation9">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation3"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt" type="RemittanceAmount2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf" type="CreditorReferenceInformation2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Invcr" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification43"/>
|
||||
<xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplementaryData1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="PlcAndNm" type="Max350Text"/>
|
||||
<xs:element name="Envlp" type="SupplementaryDataEnvelope1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplementaryDataEnvelope1">
|
||||
<xs:sequence>
|
||||
<xs:any namespace="##any" processContents="lax"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAmount1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Rate" type="PercentageRate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls" type="TaxRecordDetails1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAmountAndType1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxAmountType1Choice"/>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAmountType1Choice">
|
||||
<xs:choice>
|
||||
<xs:element name="Cd" type="ExternalTaxAmountType1Code"/>
|
||||
<xs:element name="Prtry" type="Max35Text"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxAuthorisation1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Titl" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxInformation3">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="TaxParty1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dbtr" type="TaxParty2"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AdmstnZn" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RefNb" type="Max140Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Mtd" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="SeqNb" type="Number"/>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd" type="TaxRecord1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxParty1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxParty2">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="RegnId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxTp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Authstn" type="TaxAuthorisation1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxPeriod1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Yr" type="ISODate"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="TaxRecordPeriod1Code"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DatePeriodDetails"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRecord1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Ctgy" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CtgyDtls" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="DbtrSts" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="CertId" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="FrmsCd" type="Max35Text"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount1"/>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRecordDetails1">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
|
||||
<xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="TaxRecordPeriod1Code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="MM01"/>
|
||||
<xs:enumeration value="MM02"/>
|
||||
<xs:enumeration value="MM03"/>
|
||||
<xs:enumeration value="MM04"/>
|
||||
<xs:enumeration value="MM05"/>
|
||||
<xs:enumeration value="MM06"/>
|
||||
<xs:enumeration value="MM07"/>
|
||||
<xs:enumeration value="MM08"/>
|
||||
<xs:enumeration value="MM09"/>
|
||||
<xs:enumeration value="MM10"/>
|
||||
<xs:enumeration value="MM11"/>
|
||||
<xs:enumeration value="MM12"/>
|
||||
<xs:enumeration value="QTR1"/>
|
||||
<xs:enumeration value="QTR2"/>
|
||||
<xs:enumeration value="QTR3"/>
|
||||
<xs:enumeration value="QTR4"/>
|
||||
<xs:enumeration value="HLF1"/>
|
||||
<xs:enumeration value="HLF2"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="TrueFalseIndicator">
|
||||
<xs:restriction base="xs:boolean"/>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
35
account_banking_sepa_direct_debit/data/payment_type_sdd.xml
Normal file
35
account_banking_sepa_direct_debit/data/payment_type_sdd.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
<record id="export_sdd_008_001_02" model="payment.mode.type">
|
||||
<field name="name">SEPA Direct Debit v02 (recommended)</field>
|
||||
<field name="code">pain.008.001.02</field>
|
||||
<field name="suitable_bank_types"
|
||||
eval="[(6,0,[ref('base_iban.bank_iban')])]" />
|
||||
<field name="ir_model_id" ref="model_banking_export_sdd_wizard"/>
|
||||
<field name="payment_order_type">debit</field>
|
||||
</record>
|
||||
|
||||
<record id="export_sdd_008_001_03" model="payment.mode.type">
|
||||
<field name="name">SEPA Direct Debit v03</field>
|
||||
<field name="code">pain.008.001.03</field>
|
||||
<field name="suitable_bank_types"
|
||||
eval="[(6,0,[ref('base_iban.bank_iban')])]" />
|
||||
<field name="ir_model_id" ref="model_banking_export_sdd_wizard"/>
|
||||
<field name="payment_order_type">debit</field>
|
||||
</record>
|
||||
|
||||
<record id="export_sdd_008_001_04" model="payment.mode.type">
|
||||
<field name="name">SEPA Direct Debit v04</field>
|
||||
<field name="code">pain.008.001.04</field>
|
||||
<field name="suitable_bank_types"
|
||||
eval="[(6,0,[ref('base_iban.bank_iban')])]" />
|
||||
<field name="ir_model_id" ref="model_banking_export_sdd_wizard"/>
|
||||
<field name="payment_order_type">debit</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,633 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_banking_sepa_direct_debit
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-23 22:24+0000\n"
|
||||
"PO-Revision-Date: 2013-12-23 22:24+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid
|
||||
msgid "SEPA Direct Debit Mandate Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,filename:0
|
||||
#: field:banking.export.sdd.wizard,filename:0
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:200
|
||||
#, python-format
|
||||
msgid "The SEPA Direct Debit mandate with reference '%s' for partner '%s' has expired."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:219
|
||||
#, python-format
|
||||
msgid "Cannot validate the mandate '%s' without a date of signature."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Final"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd.wizard,state:0
|
||||
msgid "Finish"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:res.partner:0
|
||||
#: view:res.partner.bank:0
|
||||
msgid "SDD Mandates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: constraint:payment.line:0
|
||||
#: constraint:sdd.mandate:0
|
||||
msgid "Error msg in raise"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
msgid "Reconciled"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Sequence Type for Next Debit"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Borne by Creditor"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.sdd_mandate_action
|
||||
#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.sdd_mandate_menu
|
||||
#: view:res.partner.bank:0
|
||||
#: field:res.partner.bank,sdd_mandate_ids:0
|
||||
msgid "SEPA Direct Debit Mandates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Validate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
|
||||
msgid "Sequence Type set to Recurring"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
msgid "Generate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_cancel
|
||||
msgid "SEPA Direct Debit Mandate Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Borne by Debtor"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:212
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:218
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:224
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:232
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:239
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:245
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:253
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:395
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:140
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:192
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:199
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:209
|
||||
#, python-format
|
||||
msgid "Error:"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_ids:0
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,unique_mandate_reference:0
|
||||
msgid "Unique Mandate Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:141
|
||||
#, python-format
|
||||
msgid "Payment Type Code '%s' is not supported. The only Payment Type Code supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and 'pain.008.001.04'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_unread:0
|
||||
msgid "If checked new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd.wizard,file_id:0
|
||||
msgid "SDD File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_expired
|
||||
msgid "SEPA Direct Debit Mandate has Expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:246
|
||||
#, python-format
|
||||
msgid "The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must have its recurrent sequence type set to 'First'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:banking.export.sdd,charge_bearer:0
|
||||
#: help:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
msgid "SEPA Direct Debit"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
msgid "SEPA Direct Debit XML file generation"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_summary:0
|
||||
msgid "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_line
|
||||
msgid "Payment Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,create_date:0
|
||||
msgid "Generation Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:396
|
||||
#, python-format
|
||||
msgid "The payment line with reference '%s' has the bank account '%s' which is not attached to the mandate '%s' (this mandate is attached to the bank account '%s')."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd.wizard,state:0
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,nb_transactions:0
|
||||
#: field:banking.export.sdd.wizard,nb_transactions:0
|
||||
msgid "Number of Transactions"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,type:0
|
||||
msgid "One-Off"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,state:0
|
||||
#: field:banking.export.sdd.wizard,state:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:240
|
||||
#, python-format
|
||||
msgid "The recurrent mandate '%s' must have a sequence type."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_unread:0
|
||||
msgid "Unread Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
#: field:banking.export.sdd,payment_order_ids:0
|
||||
#: field:banking.export.sdd.wizard,payment_order_ids:0
|
||||
msgid "Payment Orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
msgid "Sent"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:res.company,original_creditor_identifier:0
|
||||
msgid "Original Creditor Identifier"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Recurring"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:res.company,sepa_creditor_identifier:0
|
||||
msgid "Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
|
||||
"- your country ISO code (2 letters)\n"
|
||||
"- a 2-digits checkum\n"
|
||||
"- a 3-letters business code\n"
|
||||
"- a country-specific identifier"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: sql_constraint:sdd.mandate:0
|
||||
msgid "A Mandate with the same reference already exists for this company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,state:0
|
||||
msgid "Only valid mandates can be used in a payment line. A cancelled mandate is a mandate that has been cancelled by the customer. A one-off mandate expires after its first use. A recurrent mandate expires after it's final use or if it hasn't been used for 36 months."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "This field is only used for Recurrent mandates, not for One-Off mandates."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:213
|
||||
#, python-format
|
||||
msgid "The date of signature of mandate '%s' is in the future !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Signature Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,charge_bearer:0
|
||||
#: field:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Charge Bearer"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,signature_date:0
|
||||
msgid "Date of Signature of the Mandate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_cancel
|
||||
msgid "Mandate Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order
|
||||
msgid "Generated SEPA Direct Debit Files"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,sepa_migrated:0
|
||||
msgid "If this field is not active, the mandate section of the next direct debit file that include this mandate will contain the 'Original Mandate Identification' and the 'Original Creditor Scheme Identification'. This is required in a few countries (Belgium for instance), but not in all countries. If this is not required in your country, you should keep this field always active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,company_id:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
|
||||
msgid "Export SEPA Direct Debit File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:banking.export.sdd,batch_booking:0
|
||||
#: help:banking.export.sdd.wizard,batch_booking:0
|
||||
msgid "If true, the bank statement will display only one credit line for all the direct debits of the SEPA file ; if false, the bank statement will display one credit line per direct debit of the SEPA file."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:225
|
||||
#, python-format
|
||||
msgid "Cannot validate the mandate '%s' because it is not attached to a bank account."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:290
|
||||
#, python-format
|
||||
msgid "Mandate update"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Shared"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,batch_booking:0
|
||||
#: field:banking.export.sdd.wizard,batch_booking:0
|
||||
msgid "Batch Booking"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,sepa_migrated:0
|
||||
msgid "Migrated to SEPA"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,state:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,total_amount:0
|
||||
#: field:banking.export.sdd.wizard,total_amount:0
|
||||
msgid "Total Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd
|
||||
#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd
|
||||
msgid "SEPA Direct Debit Files"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Following Service Level"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:233
|
||||
#, python-format
|
||||
msgid "The mandate '%s' can't have a date of last debit before the date of signature."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final
|
||||
msgid "Sequence Type set to Final"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_is_follower:0
|
||||
msgid "Is a Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,original_mandate_identification:0
|
||||
msgid "When the field 'Migrated to SEPA' is not active, this field will be used as the Original Mandate Identification in the Direct Debit file."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:payment.order:0
|
||||
msgid "SDD Mandate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,original_mandate_identification:0
|
||||
msgid "Original Mandate Identification"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_summary:0
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
|
||||
msgid "Original Mandate Required (SEPA)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:account.invoice,sdd_mandate_id:0
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_sdd_mandate
|
||||
#: field:payment.line,sdd_mandate_id:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "SEPA Direct Debit Mandate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193
|
||||
#, python-format
|
||||
msgid "Missing SEPA Direct Debit mandate on the payment line with partner '%s' and Invoice ref '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:210
|
||||
#, python-format
|
||||
msgid "The mandate with reference '%s' for partner '%s' has type set to 'One-Off' and it has a last debit date set to '%s', so we can't use it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,scan:0
|
||||
msgid "Scan of the Mandate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,last_debit_date:0
|
||||
msgid "Date of the Last Debit"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_expired
|
||||
msgid "Mandate Expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: constraint:res.company:0
|
||||
msgid "Invalid SEPA Creditor Identifier."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_partner_bank
|
||||
msgid "Bank Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.sdd_mandate_action
|
||||
msgid "<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to create a new SEPA Direct Debit Mandate.\n"
|
||||
" </p><p>\n"
|
||||
" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
msgid "General Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_invoice
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: field:sdd.mandate,payment_line_ids:0
|
||||
msgid "Related Payment Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,type:0
|
||||
msgid "Recurrent"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,type:0
|
||||
msgid "Type of Mandate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_valid
|
||||
msgid "Mandate Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,file:0
|
||||
msgid "SEPA File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:res.company,sepa_creditor_identifier:0
|
||||
msgid "SEPA Creditor Identifier"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd
|
||||
msgid "SEPA Direct Debit export"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,partner_bank_id:0
|
||||
msgid "Bank Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:254
|
||||
#, python-format
|
||||
msgid "You must set the 'Original Mandate Identification' on the recurrent mandate '%s' which is not marked as 'Migrated to SEPA'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first
|
||||
msgid "Sequence Type set to First"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:291
|
||||
#, python-format
|
||||
msgid "As you changed the bank account attached to this mandate, the 'Sequence Type' has been set back to 'First'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_ids:0
|
||||
msgid "Messages and communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Search SEPA Direct Debit Mandates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd.wizard,file:0
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
749
account_banking_sepa_direct_debit/i18n/fr.po
Normal file
749
account_banking_sepa_direct_debit/i18n/fr.po
Normal file
@@ -0,0 +1,749 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_banking_sepa_direct_debit
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-23 22:24+0000\n"
|
||||
"PO-Revision-Date: 2014-02-01 04:49+0000\n"
|
||||
"Last-Translator: Alexis de Lattre <alexis@via.ecp.fr>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 17031)\n"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid
|
||||
msgid "SEPA Direct Debit Mandate Validated"
|
||||
msgstr "Mandat de prélèvement SEPA validé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,filename:0
|
||||
#: field:banking.export.sdd.wizard,filename:0
|
||||
msgid "Filename"
|
||||
msgstr "Nom du fichier"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:200
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
|
||||
"expired."
|
||||
msgstr ""
|
||||
"Le mandat de prélèvement SEPA portant la référence '%s' pour le partenaire "
|
||||
"'%s' a expiré."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:219
|
||||
#, python-format
|
||||
msgid "Cannot validate the mandate '%s' without a date of signature."
|
||||
msgstr "Impossible de valider le mandat '%s' sans date de signature."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Final"
|
||||
msgstr "Final"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd.wizard,state:0
|
||||
msgid "Finish"
|
||||
msgstr "Finir"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:res.partner:0
|
||||
#: view:res.partner.bank:0
|
||||
msgid "SDD Mandates"
|
||||
msgstr "Mandats SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: constraint:payment.line:0
|
||||
#: constraint:sdd.mandate:0
|
||||
msgid "Error msg in raise"
|
||||
msgstr "Error msg in raise"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
msgid "Reconciled"
|
||||
msgstr "Réconcilié"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Sequence Type for Next Debit"
|
||||
msgstr "Type de séquence pour le prochain prélèvement"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Borne by Creditor"
|
||||
msgstr "Supportés par le créancier"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.sdd_mandate_action
|
||||
#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.sdd_mandate_menu
|
||||
#: view:res.partner.bank:0
|
||||
#: field:res.partner.bank,sdd_mandate_ids:0
|
||||
msgid "SEPA Direct Debit Mandates"
|
||||
msgstr "Mandats de prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Validate"
|
||||
msgstr "Valider"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
|
||||
msgid "Sequence Type set to Recurring"
|
||||
msgstr "Type de séquence mis à Recurring"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
msgid "Generate"
|
||||
msgstr "Générer"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_cancel
|
||||
msgid "SEPA Direct Debit Mandate Cancelled"
|
||||
msgstr "Mandat de prélèvement SEPA annulé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Borne by Debtor"
|
||||
msgstr "Supportés par le débiteur"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:212
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:218
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:224
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:232
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:239
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:245
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:253
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:395
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:140
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:192
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:199
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:209
|
||||
#, python-format
|
||||
msgid "Error:"
|
||||
msgstr "Erreur :"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_ids:0
|
||||
msgid "Messages"
|
||||
msgstr "Messages"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,unique_mandate_reference:0
|
||||
msgid "Unique Mandate Reference"
|
||||
msgstr "Référence unique de mandat"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr "Annulé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:141
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Payment Type Code '%s' is not supported. The only Payment Type Code "
|
||||
"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and "
|
||||
"'pain.008.001.04'."
|
||||
msgstr ""
|
||||
"Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type "
|
||||
"de paiement supportés pour les prélèvements SEPA sont 'pain.008.001.02', "
|
||||
"'pain.008.001.03' et 'pain.008.001.04'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_unread:0
|
||||
msgid "If checked new messages require your attention."
|
||||
msgstr "If checked new messages require your attention."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd.wizard,file_id:0
|
||||
msgid "SDD File"
|
||||
msgstr "Fichier de prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_expired
|
||||
msgid "SEPA Direct Debit Mandate has Expired"
|
||||
msgstr "Le mandat de prélèvement SEPA a expiré"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:246
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
|
||||
"have its recurrent sequence type set to 'First'."
|
||||
msgstr ""
|
||||
"Le mandat récurrent '%s' dont l'option 'Migré à SEPA' n'est pas activée doit "
|
||||
"avec sa séquence mise à 'First'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:banking.export.sdd,charge_bearer:0
|
||||
#: help:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid ""
|
||||
"Following service level : transaction charges are to be applied following "
|
||||
"the rules agreed in the service level and/or scheme (SEPA Core messages must "
|
||||
"use this). Shared : transaction charges on the creditor side are to be borne "
|
||||
"by the creditor, transaction charges on the debtor side are to be borne by "
|
||||
"the debtor. Borne by creditor : all transaction charges are to be borne by "
|
||||
"the creditor. Borne by debtor : all transaction charges are to be borne by "
|
||||
"the debtor."
|
||||
msgstr ""
|
||||
"Suivant le niveau de service : la répartition des frais bancaires suit les "
|
||||
"règles pré-établies dans le schema ou dans le contrat avec la banque (les "
|
||||
"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais "
|
||||
"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires "
|
||||
"côté créancier sont à la charge du créancier. Supportés par le créancier : "
|
||||
"tous les frais bancaires sont à la charge du créancier. Supportés par le "
|
||||
"débiteur : tous les frais bancaires sont à la charge du débiteur."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Reference"
|
||||
msgstr "Référence"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
msgid "SEPA Direct Debit"
|
||||
msgstr "Prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
msgid "SEPA Direct Debit XML file generation"
|
||||
msgstr "Génération de fichiers de prélèvement SEPA XML"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_summary:0
|
||||
msgid ""
|
||||
"Holds the Chatter summary (number of messages, ...). This summary is "
|
||||
"directly in html format in order to be inserted in kanban views."
|
||||
msgstr ""
|
||||
"Holds the Chatter summary (number of messages, ...). This summary is "
|
||||
"directly in html format in order to be inserted in kanban views."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_line
|
||||
msgid "Payment Line"
|
||||
msgstr "Ligne de paiement"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,create_date:0
|
||||
msgid "Generation Date"
|
||||
msgstr "Date de génération"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:396
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The payment line with reference '%s' has the bank account '%s' which is not "
|
||||
"attached to the mandate '%s' (this mandate is attached to the bank account "
|
||||
"'%s')."
|
||||
msgstr ""
|
||||
"La ligne de paiement portant la référence '%s' est configurée avec le compte "
|
||||
"bancaire '%s' qui n'est pas rattaché au mandat '%s' (ce mandat est rattaché "
|
||||
"au compte bancaire '%s')."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd.wizard,state:0
|
||||
msgid "Create"
|
||||
msgstr "Créer"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,nb_transactions:0
|
||||
#: field:banking.export.sdd.wizard,nb_transactions:0
|
||||
msgid "Number of Transactions"
|
||||
msgstr "Nombre de transactions"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,type:0
|
||||
msgid "One-Off"
|
||||
msgstr "One-Off"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,state:0
|
||||
#: field:banking.export.sdd.wizard,state:0
|
||||
msgid "State"
|
||||
msgstr "État"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:240
|
||||
#, python-format
|
||||
msgid "The recurrent mandate '%s' must have a sequence type."
|
||||
msgstr "Le mandat récurrent '%s' doit avoir un type de séquence."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr "Followers"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_unread:0
|
||||
msgid "Unread Messages"
|
||||
msgstr "Unread Messages"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
#: field:banking.export.sdd,payment_order_ids:0
|
||||
#: field:banking.export.sdd.wizard,payment_order_ids:0
|
||||
msgid "Payment Orders"
|
||||
msgstr "Ordres de paiement"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
msgid "Sent"
|
||||
msgstr "Envoyé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:res.company,original_creditor_identifier:0
|
||||
msgid "Original Creditor Identifier"
|
||||
msgstr "Ancien Identifiant Créancier"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Recurring"
|
||||
msgstr "Recurring"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:res.company,sepa_creditor_identifier:0
|
||||
msgid ""
|
||||
"Enter the Creditor Identifier that has been attributed to your company to "
|
||||
"make SEPA Direct Debits. This identifier is composed of :\n"
|
||||
"- your country ISO code (2 letters)\n"
|
||||
"- a 2-digits checkum\n"
|
||||
"- a 3-letters business code\n"
|
||||
"- a country-specific identifier"
|
||||
msgstr ""
|
||||
"Entrez l'Identifiant créancier qui a été attribué à votre société pour "
|
||||
"réaliser des prélèvements SEPA. Cet identifiant est composé de :\n"
|
||||
"- du code ISO de votre pays (2 lettres)\n"
|
||||
"- un code de contrôle à 2 chiffres\n"
|
||||
"- un code d'activité à 3 lettres\n"
|
||||
"- un identifiant national"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: sql_constraint:sdd.mandate:0
|
||||
msgid "A Mandate with the same reference already exists for this company !"
|
||||
msgstr "Un mandat avec la même référence existe déjà pour cette société !"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,state:0
|
||||
msgid ""
|
||||
"Only valid mandates can be used in a payment line. A cancelled mandate is a "
|
||||
"mandate that has been cancelled by the customer. A one-off mandate expires "
|
||||
"after its first use. A recurrent mandate expires after it's final use or if "
|
||||
"it hasn't been used for 36 months."
|
||||
msgstr ""
|
||||
"Seuls des mandats valides peuvent être utilisés dans une ligne de paiement. "
|
||||
"Un mandate annulé est un mandat qui a été annulé par le client. Un mandat "
|
||||
"One-Off expire à l'issue de sa première utilisation. Un mandate récurrent "
|
||||
"expire après sa dernière utilisation ou si il n'a pas été utilisé pendant 36 "
|
||||
"mois."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid ""
|
||||
"This field is only used for Recurrent mandates, not for One-Off mandates."
|
||||
msgstr ""
|
||||
"Ce champ n'est utilisé que pour les mandats récurrents, pas pour les mandats "
|
||||
"One-Off."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:213
|
||||
#, python-format
|
||||
msgid "The date of signature of mandate '%s' is in the future !"
|
||||
msgstr "La date de signature du mandat '%s' est dans le futur !"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Signature Date"
|
||||
msgstr "Date de signature"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,charge_bearer:0
|
||||
#: field:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Charge Bearer"
|
||||
msgstr "Répartition des frais"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr "Partenaire"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "First"
|
||||
msgstr "First"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,signature_date:0
|
||||
msgid "Date of Signature of the Mandate"
|
||||
msgstr "Date de signature du mandat"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_cancel
|
||||
msgid "Mandate Cancelled"
|
||||
msgstr "Mandat annulé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order
|
||||
msgid "Generated SEPA Direct Debit Files"
|
||||
msgstr "Fichiers de prélèvement SEPA générés"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,sepa_migrated:0
|
||||
msgid ""
|
||||
"If this field is not active, the mandate section of the next direct debit "
|
||||
"file that include this mandate will contain the 'Original Mandate "
|
||||
"Identification' and the 'Original Creditor Scheme Identification'. This is "
|
||||
"required in a few countries (Belgium for instance), but not in all "
|
||||
"countries. If this is not required in your country, you should keep this "
|
||||
"field always active."
|
||||
msgstr ""
|
||||
"Si cette option n'est pas activée, la section qui concerne le mandat dans le "
|
||||
"prochain fichier de prélèvement qui incluera ce mandat contiendra les champs "
|
||||
"'Original Mandate Identification' et 'Original Creditor Scheme "
|
||||
"Identification'. Ces champs sont requis dans certains pays (en Belgique "
|
||||
"notamment), mais pas dans tous les pays. Si ces champs ne sont pas requis "
|
||||
"dans votre pays, vous devriez garder ce champ toujours actif."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
|
||||
msgid "Export SEPA Direct Debit File"
|
||||
msgstr "Export du fichier de prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:banking.export.sdd,batch_booking:0
|
||||
#: help:banking.export.sdd.wizard,batch_booking:0
|
||||
msgid ""
|
||||
"If true, the bank statement will display only one credit line for all the "
|
||||
"direct debits of the SEPA file ; if false, the bank statement will display "
|
||||
"one credit line per direct debit of the SEPA file."
|
||||
msgstr ""
|
||||
"Si activé, le relevé de compte ne fera apparaître qu'une ligne de crédit "
|
||||
"pour tous les prélèvements du fichier SEPA ; si désactivé, le relevé de "
|
||||
"banque fera apparaître une ligne de crédit pour chaque prélèvement du "
|
||||
"fichier SEPA."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:225
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot validate the mandate '%s' because it is not attached to a bank "
|
||||
"account."
|
||||
msgstr ""
|
||||
"Impossible de valider le mandat '%s' car il n'est pas rattaché à un compte "
|
||||
"bancaire."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Draft"
|
||||
msgstr "Brouillon"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:290
|
||||
#, python-format
|
||||
msgid "Mandate update"
|
||||
msgstr "Mise-à-jour du mandat"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Shared"
|
||||
msgstr "Partagée"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,batch_booking:0
|
||||
#: field:banking.export.sdd.wizard,batch_booking:0
|
||||
msgid "Batch Booking"
|
||||
msgstr "Crédit groupé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,sepa_migrated:0
|
||||
msgid "Migrated to SEPA"
|
||||
msgstr "Migré à SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,state:0
|
||||
msgid "Status"
|
||||
msgstr "Statut"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,total_amount:0
|
||||
#: field:banking.export.sdd.wizard,total_amount:0
|
||||
msgid "Total Amount"
|
||||
msgstr "Montant total"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd
|
||||
#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd
|
||||
msgid "SEPA Direct Debit Files"
|
||||
msgstr "Fichiers de prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Following Service Level"
|
||||
msgstr "Suivant le niveau de service"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:233
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The mandate '%s' can't have a date of last debit before the date of "
|
||||
"signature."
|
||||
msgstr ""
|
||||
"Le mandat '%s' ne peut pas avoir une date de dernier débit antérieure à la "
|
||||
"date de signature."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final
|
||||
msgid "Sequence Type set to Final"
|
||||
msgstr "Type de Séquence mis à Final"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_is_follower:0
|
||||
msgid "Is a Follower"
|
||||
msgstr "Is a Follower"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,original_mandate_identification:0
|
||||
msgid ""
|
||||
"When the field 'Migrated to SEPA' is not active, this field will be used as "
|
||||
"the Original Mandate Identification in the Direct Debit file."
|
||||
msgstr ""
|
||||
"Quand le champ 'Migré à SEPA' n'est pas activé, ce champ sera le 'Original "
|
||||
"Mandate Identification' dans le fichier de prélèvement."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:payment.order:0
|
||||
msgid "SDD Mandate"
|
||||
msgstr "Mandat de prélèvement"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,original_mandate_identification:0
|
||||
msgid "Original Mandate Identification"
|
||||
msgstr "Ancien Identifiant du Mandat"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Sociétés"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_summary:0
|
||||
msgid "Summary"
|
||||
msgstr "Résumé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
|
||||
msgid "Original Mandate Required (SEPA)"
|
||||
msgstr "Ancien mandat requis (SEPA)"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:account.invoice,sdd_mandate_id:0
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_sdd_mandate
|
||||
#: field:payment.line,sdd_mandate_id:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "SEPA Direct Debit Mandate"
|
||||
msgstr "Mandat de prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Missing SEPA Direct Debit mandate on the payment line with partner '%s' and "
|
||||
"Invoice ref '%s'."
|
||||
msgstr ""
|
||||
"Mandat de prélèvement SEPA manquant sur la ligne de paiement ayant pour "
|
||||
"partenaire '%s' et pour référence de facture '%s'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:210
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
|
||||
"and it has a last debit date set to '%s', so we can't use it."
|
||||
msgstr ""
|
||||
"Le mandat portant la référence '%s' pour le partenaire '%s' est de type 'One-"
|
||||
"Off' et il a une date de dernier débit au '%s', donc il n'est pas utilisable."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,scan:0
|
||||
msgid "Scan of the Mandate"
|
||||
msgstr "Scan du mandat"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,last_debit_date:0
|
||||
msgid "Date of the Last Debit"
|
||||
msgstr "Date du dernier prélèvement"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_expired
|
||||
msgid "Mandate Expired"
|
||||
msgstr "Mandat expiré"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: constraint:res.company:0
|
||||
msgid "Invalid SEPA Creditor Identifier."
|
||||
msgstr "Identifiant créancier SEPA invalide."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_partner_bank
|
||||
msgid "Bank Accounts"
|
||||
msgstr "Comptes bancaires"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.sdd_mandate_action
|
||||
msgid ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to create a new SEPA Direct Debit Mandate.\n"
|
||||
" </p><p>\n"
|
||||
" A SEPA Direct Debit Mandate is a document signed by your customer "
|
||||
"that gives you the autorization to do one or several direct debits on his "
|
||||
"bank account.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Cliquez pour créer un mandat de prélèvement SEPA.\n"
|
||||
" </p><p>\n"
|
||||
" Un mandat de prélèvement SEPA est un document signé par votre client "
|
||||
"qui vous donne l'autorisation de réaliser un ou plusieurs prélèvements sur "
|
||||
"son compte bancaire.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
msgid "General Information"
|
||||
msgstr "Informations générales"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Valid"
|
||||
msgstr "Valide"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_invoice
|
||||
msgid "Invoice"
|
||||
msgstr "Facture"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: field:sdd.mandate,payment_line_ids:0
|
||||
msgid "Related Payment Lines"
|
||||
msgstr "Lignes de paiement associées"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,type:0
|
||||
msgid "Recurrent"
|
||||
msgstr "Récurrent"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,type:0
|
||||
msgid "Type of Mandate"
|
||||
msgstr "Type de mandat"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_valid
|
||||
msgid "Mandate Validated"
|
||||
msgstr "Mandat validé"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,file:0
|
||||
msgid "SEPA File"
|
||||
msgstr "Fichier SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:res.company,sepa_creditor_identifier:0
|
||||
msgid "SEPA Creditor Identifier"
|
||||
msgstr "Identifiant créancier SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd
|
||||
msgid "SEPA Direct Debit export"
|
||||
msgstr "Export de prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Expired"
|
||||
msgstr "Expiré"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,partner_bank_id:0
|
||||
msgid "Bank Account"
|
||||
msgstr "Compte bancaire"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:254
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You must set the 'Original Mandate Identification' on the recurrent mandate "
|
||||
"'%s' which is not marked as 'Migrated to SEPA'."
|
||||
msgstr ""
|
||||
"Vous devez renseigner le champ 'Ancien identifiant du mandat' sur le mandat "
|
||||
"récurrent '%s' qui n'est pas marqué comme étant 'Migré à SEPA'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first
|
||||
msgid "Sequence Type set to First"
|
||||
msgstr "Type de Séquence mis à First"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:291
|
||||
#, python-format
|
||||
msgid ""
|
||||
"As you changed the bank account attached to this mandate, the 'Sequence "
|
||||
"Type' has been set back to 'First'."
|
||||
msgstr ""
|
||||
"Etant donné que vous avez changé le compte bancaire associé à ce mandat, le "
|
||||
"'Type de séquence' a été remis à 'First'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_ids:0
|
||||
msgid "Messages and communication history"
|
||||
msgstr "Messages and communication history"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Search SEPA Direct Debit Mandates"
|
||||
msgstr "Recherche dans les mandats de prélèvement SEPA"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd.wizard,file:0
|
||||
msgid "File"
|
||||
msgstr "Fichier"
|
||||
754
account_banking_sepa_direct_debit/i18n/nl.po
Normal file
754
account_banking_sepa_direct_debit/i18n/nl.po
Normal file
@@ -0,0 +1,754 @@
|
||||
# Dutch translation for banking-addons
|
||||
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
|
||||
# This file is distributed under the same license as the banking-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: banking-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2013-12-23 22:24+0000\n"
|
||||
"PO-Revision-Date: 2014-04-24 10:38+0000\n"
|
||||
"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 17031)\n"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid
|
||||
msgid "SEPA Direct Debit Mandate Validated"
|
||||
msgstr "SEPA incasso machtiging bevestigd."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,filename:0
|
||||
#: field:banking.export.sdd.wizard,filename:0
|
||||
msgid "Filename"
|
||||
msgstr "Bestandsnaam"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:200
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
|
||||
"expired."
|
||||
msgstr ""
|
||||
"De SEPA incasso machtiging met referentie '%s' voor relatie '%s' is verlopen."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:219
|
||||
#, python-format
|
||||
msgid "Cannot validate the mandate '%s' without a date of signature."
|
||||
msgstr ""
|
||||
"Het is niet mogelijk de machtiging '%s' te bevestigen zonder een datum van "
|
||||
"ondertekenen."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Final"
|
||||
msgstr "Definitief"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd.wizard,state:0
|
||||
msgid "Finish"
|
||||
msgstr "Gereed"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:res.partner:0
|
||||
#: view:res.partner.bank:0
|
||||
msgid "SDD Mandates"
|
||||
msgstr "SDD machtiging"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: constraint:payment.line:0
|
||||
#: constraint:sdd.mandate:0
|
||||
msgid "Error msg in raise"
|
||||
msgstr "Fout bericht"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
msgid "Reconciled"
|
||||
msgstr "Afgeletterd"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Sequence Type for Next Debit"
|
||||
msgstr "Reeks soort voor volgende incasso"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Borne by Creditor"
|
||||
msgstr "Op rekening van schuldeiser"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.sdd_mandate_action
|
||||
#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.sdd_mandate_menu
|
||||
#: view:res.partner.bank:0
|
||||
#: field:res.partner.bank,sdd_mandate_ids:0
|
||||
msgid "SEPA Direct Debit Mandates"
|
||||
msgstr "SEPA incasso machtigingen"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Validate"
|
||||
msgstr "Bevestigen"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
|
||||
msgid "Sequence Type set to Recurring"
|
||||
msgstr "Reeks soort ingesteld op herhalend"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
msgid "Generate"
|
||||
msgstr "Genereer"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_cancel
|
||||
msgid "SEPA Direct Debit Mandate Cancelled"
|
||||
msgstr "SEPA incasso machtigingen geannuleerd"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Borne by Debtor"
|
||||
msgstr "Rekening van schuldenaar"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:212
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:218
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:224
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:232
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:239
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:245
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:253
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:395
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:140
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:192
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:199
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:209
|
||||
#, python-format
|
||||
msgid "Error:"
|
||||
msgstr "Fout:"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_ids:0
|
||||
msgid "Messages"
|
||||
msgstr "Berichten"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,unique_mandate_reference:0
|
||||
msgid "Unique Mandate Reference"
|
||||
msgstr "Unieke machtiging referentie"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr "Geannuleerd"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:141
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Payment Type Code '%s' is not supported. The only Payment Type Code "
|
||||
"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and "
|
||||
"'pain.008.001.04'."
|
||||
msgstr ""
|
||||
"Betaal soort code '%s' wordt niet ondersteund. De enige betaalsoort code "
|
||||
"ondersteund voor SEPA incasso's zijn 'pain.008.001.02', 'pain.008.001.03' en "
|
||||
"'pain.008.001.04'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_unread:0
|
||||
msgid "If checked new messages require your attention."
|
||||
msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd.wizard,file_id:0
|
||||
msgid "SDD File"
|
||||
msgstr "SDD bestand"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_expired
|
||||
msgid "SEPA Direct Debit Mandate has Expired"
|
||||
msgstr "SEPA Direct incasso machtiging is verlopen"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:246
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
|
||||
"have its recurrent sequence type set to 'First'."
|
||||
msgstr ""
|
||||
"Bij de herhalende machtiging '%s' welke niet is gemarkeerd als 'gemigreerd "
|
||||
"naar SEPA' dient de reeks soort te worden ingesteld op 'Eerste'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:banking.export.sdd,charge_bearer:0
|
||||
#: help:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid ""
|
||||
"Following service level : transaction charges are to be applied following "
|
||||
"the rules agreed in the service level and/or scheme (SEPA Core messages must "
|
||||
"use this). Shared : transaction charges on the creditor side are to be borne "
|
||||
"by the creditor, transaction charges on the debtor side are to be borne by "
|
||||
"the debtor. Borne by creditor : all transaction charges are to be borne by "
|
||||
"the creditor. Borne by debtor : all transaction charges are to be borne by "
|
||||
"the debtor."
|
||||
msgstr ""
|
||||
"Volg service level: Transactie kosten worden toegepast volgens de "
|
||||
"afgesproken regels in het service level en/of schema (Voor SEPA berichten "
|
||||
"deze gebruiken). Gedeeld : De transactiekosten aan de crediteur zijde zijn "
|
||||
"voor de schuldenaar, transactiekosten aan de debiteur kant zijn voor de "
|
||||
"schuldeiser. Op rekening van de schuldenaar: Alle transactie kosten zijn "
|
||||
"voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle "
|
||||
"transactie kosten zijn voor rekening van de schuldeiser."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Reference"
|
||||
msgstr "Referentie"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
msgid "SEPA Direct Debit"
|
||||
msgstr "SEPA Incasso (Direct Debit)"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
msgid "SEPA Direct Debit XML file generation"
|
||||
msgstr "SEPA Incasso XML bestand aanmaken"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_summary:0
|
||||
msgid ""
|
||||
"Holds the Chatter summary (number of messages, ...). This summary is "
|
||||
"directly in html format in order to be inserted in kanban views."
|
||||
msgstr ""
|
||||
"Bevat de samenvatting van de chatter (aantal berichten,...). Deze "
|
||||
"samenvatting is direct in html formaat om zo in de kanban weergave te worden "
|
||||
"ingevoegd."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_line
|
||||
msgid "Payment Line"
|
||||
msgstr "Betaalregel"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,create_date:0
|
||||
msgid "Generation Date"
|
||||
msgstr "Aangemaakt op"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:396
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The payment line with reference '%s' has the bank account '%s' which is not "
|
||||
"attached to the mandate '%s' (this mandate is attached to the bank account "
|
||||
"'%s')."
|
||||
msgstr ""
|
||||
"De betaalregel met referentie '%s' heeft het bankrekeningnummer '%s' welke "
|
||||
"niet is gekoppeld aan de machtiging '%s' (deze machtiging is gekoppeld aan "
|
||||
"bankrekening '%s')."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd.wizard,state:0
|
||||
msgid "Create"
|
||||
msgstr "Aanmaken"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,nb_transactions:0
|
||||
#: field:banking.export.sdd.wizard,nb_transactions:0
|
||||
msgid "Number of Transactions"
|
||||
msgstr "Aantal transacties"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,type:0
|
||||
msgid "One-Off"
|
||||
msgstr "Eenmalig"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,state:0
|
||||
#: field:banking.export.sdd.wizard,state:0
|
||||
msgid "State"
|
||||
msgstr "Status"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:240
|
||||
#, python-format
|
||||
msgid "The recurrent mandate '%s' must have a sequence type."
|
||||
msgstr "De herhalende machtiging '%s' dient een reeks soort te hebben."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr "Volgers"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_unread:0
|
||||
msgid "Unread Messages"
|
||||
msgstr "Ongelezen berichten"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
#: field:banking.export.sdd,payment_order_ids:0
|
||||
#: field:banking.export.sdd.wizard,payment_order_ids:0
|
||||
msgid "Payment Orders"
|
||||
msgstr "Betaalopdrachten"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Type"
|
||||
msgstr "Soort"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
msgid "Sent"
|
||||
msgstr "Verstuurd"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:res.company,original_creditor_identifier:0
|
||||
msgid "Original Creditor Identifier"
|
||||
msgstr "Originele Incassant-ID"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "Recurring"
|
||||
msgstr "Terugkerend"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:res.company,sepa_creditor_identifier:0
|
||||
msgid ""
|
||||
"Enter the Creditor Identifier that has been attributed to your company to "
|
||||
"make SEPA Direct Debits. This identifier is composed of :\n"
|
||||
"- your country ISO code (2 letters)\n"
|
||||
"- a 2-digits checkum\n"
|
||||
"- a 3-letters business code\n"
|
||||
"- a country-specific identifier"
|
||||
msgstr ""
|
||||
"Geef de Incassant-ID in, welke is toegewezen aan uw bedrijf om incasso's uit "
|
||||
"te voeren. De Incassant-ID is samengesteld uit:\n"
|
||||
"- uw ISO landcode (2 letters)\n"
|
||||
"- een 2 cijferig controlegetal\n"
|
||||
"- een 3 cijferig business code\n"
|
||||
"- een landspecifieke identifier"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: sql_constraint:sdd.mandate:0
|
||||
msgid "A Mandate with the same reference already exists for this company !"
|
||||
msgstr "Een machtiging met dezelfde referentie bestaat al vooR dit bedrijf!"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,state:0
|
||||
msgid ""
|
||||
"Only valid mandates can be used in a payment line. A cancelled mandate is a "
|
||||
"mandate that has been cancelled by the customer. A one-off mandate expires "
|
||||
"after its first use. A recurrent mandate expires after it's final use or if "
|
||||
"it hasn't been used for 36 months."
|
||||
msgstr ""
|
||||
"Alleen geldige machtigingen kunnen worden gebruikt op betaalregels. Een "
|
||||
"geannuleerde machtiging is een machtiging welke is geannuleerd door de "
|
||||
"klant. Een eenmalige machtiging verloopt na eenmalig gebruik. Een herhalende "
|
||||
"machtiging verloopt na zijn laatste gebruik of als deze niet is gebruikt "
|
||||
"voor 36 maanden."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid ""
|
||||
"This field is only used for Recurrent mandates, not for One-Off mandates."
|
||||
msgstr ""
|
||||
"Dit veld wordt alleen gebruikt voor herhalende machtigingen, niet voor een "
|
||||
"eenmalige machtiging."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:213
|
||||
#, python-format
|
||||
msgid "The date of signature of mandate '%s' is in the future !"
|
||||
msgstr ""
|
||||
"De datum van de handtekening van de machtiging '%s' is in de toekomst!"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Signature Date"
|
||||
msgstr "Handtekening datum"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,charge_bearer:0
|
||||
#: field:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Charge Bearer"
|
||||
msgstr "Kostenverdeling"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr "Relatie"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:sdd.mandate,recurrent_sequence_type:0
|
||||
msgid "First"
|
||||
msgstr "Eerste"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,signature_date:0
|
||||
msgid "Date of Signature of the Mandate"
|
||||
msgstr "Datum avn de handtekening van de machtiging"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_cancel
|
||||
msgid "Mandate Cancelled"
|
||||
msgstr "Machtiging geannuleerd"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order
|
||||
msgid "Generated SEPA Direct Debit Files"
|
||||
msgstr "Genereerde SEPA incasso bestanden"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,sepa_migrated:0
|
||||
msgid ""
|
||||
"If this field is not active, the mandate section of the next direct debit "
|
||||
"file that include this mandate will contain the 'Original Mandate "
|
||||
"Identification' and the 'Original Creditor Scheme Identification'. This is "
|
||||
"required in a few countries (Belgium for instance), but not in all "
|
||||
"countries. If this is not required in your country, you should keep this "
|
||||
"field always active."
|
||||
msgstr ""
|
||||
"Indien niet aangevinkt, zal het machtiging gedeelte van het volgende incasso "
|
||||
"bestand, dat deze machtiging bevat, de 'Originele machtiging identificatie' "
|
||||
"en de 'Origineel schuldeiser identificatie' bevatten. Dit is verplicht in "
|
||||
"een aantal landen (zoals bijvoorbeeld België), maar niet in alle landen. "
|
||||
"Indien dit niet verplicht is in uw land, dient u dit veld altijd aangevinkt "
|
||||
"te houden."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "Bedijf"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
|
||||
msgid "Export SEPA Direct Debit File"
|
||||
msgstr "Exporteer SEPA incasso bestand"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:banking.export.sdd,batch_booking:0
|
||||
#: help:banking.export.sdd.wizard,batch_booking:0
|
||||
msgid ""
|
||||
"If true, the bank statement will display only one credit line for all the "
|
||||
"direct debits of the SEPA file ; if false, the bank statement will display "
|
||||
"one credit line per direct debit of the SEPA file."
|
||||
msgstr ""
|
||||
"Indien aangevinkt, zal het bankafschrift maar één credit regel weergeven "
|
||||
"voor alle incasso's van het SEPA bestand. Indien niet aangevinkt wordt voor "
|
||||
"iedere incasso een credit regel weergegeven op het bankafschrift."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:225
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot validate the mandate '%s' because it is not attached to a bank "
|
||||
"account."
|
||||
msgstr ""
|
||||
"Kan de machtiging '%s' niet bevestigen omdat deze niet is gekoppeld aan een "
|
||||
"bankrekening."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,state:0
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Draft"
|
||||
msgstr "Concept"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:290
|
||||
#, python-format
|
||||
msgid "Mandate update"
|
||||
msgstr "Machtiging bijwerken"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Shared"
|
||||
msgstr "Gedeeld"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,batch_booking:0
|
||||
#: field:banking.export.sdd.wizard,batch_booking:0
|
||||
msgid "Batch Booking"
|
||||
msgstr "Bach verwerking"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,sepa_migrated:0
|
||||
msgid "Migrated to SEPA"
|
||||
msgstr "Gemigreerd naar SEPa"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,state:0
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,total_amount:0
|
||||
#: field:banking.export.sdd.wizard,total_amount:0
|
||||
msgid "Total Amount"
|
||||
msgstr "Totaalbedrag"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd
|
||||
#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd
|
||||
msgid "SEPA Direct Debit Files"
|
||||
msgstr "SEPA incasso bestanden"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: selection:banking.export.sdd,charge_bearer:0
|
||||
#: selection:banking.export.sdd.wizard,charge_bearer:0
|
||||
msgid "Following Service Level"
|
||||
msgstr "Volg service level"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:233
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The mandate '%s' can't have a date of last debit before the date of "
|
||||
"signature."
|
||||
msgstr ""
|
||||
"De machtiging '%s' kan geen datum van laatste incasso hebben die eerder is "
|
||||
"dan de datum van ondertekening."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final
|
||||
msgid "Sequence Type set to Final"
|
||||
msgstr "Reeks soort ingesteld op definitief"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_is_follower:0
|
||||
msgid "Is a Follower"
|
||||
msgstr "Is een volger"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,original_mandate_identification:0
|
||||
msgid ""
|
||||
"When the field 'Migrated to SEPA' is not active, this field will be used as "
|
||||
"the Original Mandate Identification in the Direct Debit file."
|
||||
msgstr ""
|
||||
"Wanneer het veld 'gemigreerd naar SEPA' niet actief is, zal dit veld worden "
|
||||
"gebruikt als de originele machtiging identificatie in het incasso bestand."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:payment.order:0
|
||||
msgid "SDD Mandate"
|
||||
msgstr "SDD machtiging"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,original_mandate_identification:0
|
||||
msgid "Original Mandate Identification"
|
||||
msgstr "Originele machtiging indificatie"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Bedrijven"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,message_summary:0
|
||||
msgid "Summary"
|
||||
msgstr "Samenvatting"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
|
||||
msgid "Original Mandate Required (SEPA)"
|
||||
msgstr "Originele machtiging benodigd (SEPA)"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:account.invoice,sdd_mandate_id:0
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_sdd_mandate
|
||||
#: field:payment.line,sdd_mandate_id:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "SEPA Direct Debit Mandate"
|
||||
msgstr "SEPA incasso machtiging"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Missing SEPA Direct Debit mandate on the payment line with partner '%s' and "
|
||||
"Invoice ref '%s'."
|
||||
msgstr ""
|
||||
"Ontbrekende SEPA incasso machtiging op de betaalregel met relatie '%s' en "
|
||||
"factuur referentie '%s'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:210
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
|
||||
"and it has a last debit date set to '%s', so we can't use it."
|
||||
msgstr ""
|
||||
"De machtiging referentie '%s' voor relatie %s' is ingesteld op 'eenmalig' en "
|
||||
"de laatste incasso datum is ingesteld op '%s'. Zodoende kunnen we deze niet "
|
||||
"gebruiken."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,scan:0
|
||||
msgid "Scan of the Mandate"
|
||||
msgstr "Scan van de machtiging"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,last_debit_date:0
|
||||
msgid "Date of the Last Debit"
|
||||
msgstr "Datum van laatste incasso"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_expired
|
||||
msgid "Mandate Expired"
|
||||
msgstr "Machtiging verlopen"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: constraint:res.company:0
|
||||
msgid "Invalid SEPA Creditor Identifier."
|
||||
msgstr "Ongeldige SEPA Incassant-ID."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_partner_bank
|
||||
msgid "Bank Accounts"
|
||||
msgstr "Bankrekeningen"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.sdd_mandate_action
|
||||
msgid ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to create a new SEPA Direct Debit Mandate.\n"
|
||||
" </p><p>\n"
|
||||
" A SEPA Direct Debit Mandate is a document signed by your customer "
|
||||
"that gives you the autorization to do one or several direct debits on his "
|
||||
"bank account.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Klik voor het maken van een nieuwe SEPA incasso machtiging.\n"
|
||||
" </p><p>\n"
|
||||
" Een SEPA incasso machtiging is een document ondertekend door uw "
|
||||
"klant, welke u toestemming geeft om incasso's uit te voeren op zijn "
|
||||
"bankrekening.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd:0
|
||||
msgid "General Information"
|
||||
msgstr "Algemene informatie"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Valid"
|
||||
msgstr "Geldig"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_invoice
|
||||
msgid "Invoice"
|
||||
msgstr "Factuur"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:banking.export.sdd.wizard:0
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleer"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: field:sdd.mandate,payment_line_ids:0
|
||||
msgid "Related Payment Lines"
|
||||
msgstr "Gerelateerde betaalregels"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,type:0
|
||||
msgid "Recurrent"
|
||||
msgstr "Terugkerend"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,type:0
|
||||
msgid "Type of Mandate"
|
||||
msgstr "Soort machtiging"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_valid
|
||||
msgid "Mandate Validated"
|
||||
msgstr "Machtiging bevestigd"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd,file:0
|
||||
msgid "SEPA File"
|
||||
msgstr "SEPA bestand"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:res.company,sepa_creditor_identifier:0
|
||||
msgid "SEPA Creditor Identifier"
|
||||
msgstr "SEPA Incassant-ID"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd
|
||||
msgid "SEPA Direct Debit export"
|
||||
msgstr "SEPA incasso export"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
#: selection:sdd.mandate,state:0
|
||||
msgid "Expired"
|
||||
msgstr "Verlopen"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:sdd.mandate,partner_bank_id:0
|
||||
msgid "Bank Account"
|
||||
msgstr "Bankrekening"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:254
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You must set the 'Original Mandate Identification' on the recurrent mandate "
|
||||
"'%s' which is not marked as 'Migrated to SEPA'."
|
||||
msgstr ""
|
||||
"U dient de 'Originele machtiging identificatie' in te stellen op de "
|
||||
"herhalende machtiging '%s' welke niet is gemarkeerd als 'Gemigreerd naar "
|
||||
"SEPA'"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first
|
||||
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first
|
||||
msgid "Sequence Type set to First"
|
||||
msgstr "Reeks ingesteld op eerste"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:291
|
||||
#, python-format
|
||||
msgid ""
|
||||
"As you changed the bank account attached to this mandate, the 'Sequence "
|
||||
"Type' has been set back to 'First'."
|
||||
msgstr ""
|
||||
"Omdat u de gekoppelde bankrekening heeft gewijzigd is de reeks terug gezet "
|
||||
"naar 'Eerste'."
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: help:sdd.mandate,message_ids:0
|
||||
msgid "Messages and communication history"
|
||||
msgstr "Berichten en communicatie historie"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: view:sdd.mandate:0
|
||||
msgid "Search SEPA Direct Debit Mandates"
|
||||
msgstr "Zoek SEPA incasso machtigingen"
|
||||
|
||||
#. module: account_banking_sepa_direct_debit
|
||||
#: field:banking.export.sdd.wizard,file:0
|
||||
msgid "File"
|
||||
msgstr "Bestand"
|
||||
26
account_banking_sepa_direct_debit/mandate_expire_cron.xml
Normal file
26
account_banking_sepa_direct_debit/mandate_expire_cron.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com/)
|
||||
@author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
|
||||
<openerp>
|
||||
|
||||
<data noupdate="1"> <!-- noupdate = 1 for the 'active' field -->
|
||||
<record id="sdd_mandate_expire_cron" model="ir.cron">
|
||||
<field name="name">Set SEPA Direct Debit Mandates to Expired</field>
|
||||
<field name="active" eval="True"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="numbercall">-1</field> <!-- don't limit the number of calls -->
|
||||
<field name="doall" eval="False"/>
|
||||
<field name="model" eval="'sdd.mandate'"/>
|
||||
<field name="function" eval="'_sdd_mandate_set_state_to_expired'" />
|
||||
<field name="args" eval="'()'"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
48
account_banking_sepa_direct_debit/res_partner_bank_view.xml
Normal file
48
account_banking_sepa_direct_debit/res_partner_bank_view.xml
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="sdd_mandate_partner_bank_form" model="ir.ui.view">
|
||||
<field name="name">sdd.mandate.res.partner.bank.form</field>
|
||||
<field name="model">res.partner.bank</field>
|
||||
<field name="inherit_id" ref="base.view_partner_bank_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<group name="bank" position="after">
|
||||
<group name="sdd_mandates" string="SEPA Direct Debit Mandates" colspan="4">
|
||||
<field name="sdd_mandate_ids" context="{'default_partner_bank_id': active_id, 'sdd_mandate_bank_partner_view': True}" nolabel="1"/>
|
||||
</group>
|
||||
</group>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sdd_mandate_partner_bank_tree" model="ir.ui.view">
|
||||
<field name="name">sdd.mandate.res.partner.bank.tree</field>
|
||||
<field name="model">res.partner.bank</field>
|
||||
<field name="inherit_id" ref="base.view_partner_bank_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="partner_id" position="after">
|
||||
<field name="sdd_mandate_ids" string="SDD Mandates"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- add number of mandates in this list of bank accounts
|
||||
on the partner form -->
|
||||
<record id="sdd_mandate_partner_form" model="ir.ui.view">
|
||||
<field name="name">sdd.mandate.partner.form</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="account.view_partner_property_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='bank_ids']/tree/field[@name='owner_name']" position="after">
|
||||
<field name="sdd_mandate_ids" string="SDD Mandates"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
107
account_banking_sepa_direct_debit/sdd_mandate_view.xml
Normal file
107
account_banking_sepa_direct_debit/sdd_mandate_view.xml
Normal file
@@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="sdd_mandate_form" model="ir.ui.view">
|
||||
<field name="name">sdd.mandate.form</field>
|
||||
<field name="type">form</field>
|
||||
<field name="model">sdd.mandate</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="SEPA Direct Debit Mandate" col="1">
|
||||
<group>
|
||||
<button name="validate" type="object" string="Validate" states="draft" />
|
||||
<button name="cancel" type="object" string="Cancel" states="draft,valid"/>
|
||||
<button name="back2draft" type="object" string="Back to Draft"
|
||||
states="cancel" groups="account.group_account_manager"
|
||||
confirm="You should set a mandate back to draft only if you cancelled it by mistake. Do you want to continue ?"/>
|
||||
<field name="state" widget="statusbar"/>
|
||||
</group>
|
||||
<group col="1">
|
||||
<field name="unique_mandate_reference" />
|
||||
<group>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="partner_bank_id"
|
||||
on_change="mandate_partner_bank_change(partner_bank_id, type, recurrent_sequence_type, last_debit_date, state)"
|
||||
invisible="context.get('sdd_mandate_bank_partner_view')"
|
||||
/>
|
||||
<field name="partner_id" invisible="context.get('sdd_mandate_bank_partner_view')"/>
|
||||
<field name="type" on_change="mandate_type_change(type)"/>
|
||||
<field name="recurrent_sequence_type" attrs="{'invisible': [('type', '=', 'oneoff')], 'required': [('type', '=', 'recurrent')]}"/>
|
||||
<field name="signature_date"/>
|
||||
<field name="scan"/>
|
||||
<field name="last_debit_date"/>
|
||||
<field name="sepa_migrated" groups="account_banking_sepa_direct_debit.group_original_mandate_required"/>
|
||||
<field name="original_mandate_identification" attrs="{'invisible': [('sepa_migrated', '=', True)], 'required': [('sepa_migrated', '=', False)]}" groups="account_banking_sepa_direct_debit.group_original_mandate_required"/>
|
||||
</group>
|
||||
<group string="Related Payment Lines">
|
||||
<field name="payment_line_ids" nolabel="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="message_ids" widget="mail_thread" nolabel="1" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sdd_mandate_tree" model="ir.ui.view">
|
||||
<field name="name">sdd.mandate.tree</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="model">sdd.mandate</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="SEPA Direct Debit Mandate" colors="blue:state=='draft';black:state in ('expired', 'cancel')">
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="partner_id" invisible="context.get('sdd_mandate_bank_partner_view')"/>
|
||||
<field name="unique_mandate_reference" string="Reference"/>
|
||||
<field name="type" string="Type"/>
|
||||
<field name="signature_date" string="Signature Date"/>
|
||||
<field name="last_debit_date"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sdd_mandate_search" model="ir.ui.view">
|
||||
<field name="name">sdd.mandate.search</field>
|
||||
<field name="type">search</field>
|
||||
<field name="model">sdd.mandate</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search SEPA Direct Debit Mandates">
|
||||
<field name="partner_id"/>
|
||||
<filter name="draft" string="Draft" domain="[('state', '=', 'draft')]" />
|
||||
<filter name="valid" string="Valid" domain="[('state', '=', 'valid')]" />
|
||||
<filter name="cancel" string="Cancelled" domain="[('state', '=', 'cancel')]" />
|
||||
<filter name="expired" string="Expired" domain="[('state', '=', 'expired')]" />
|
||||
<filter name="oneoff" string="One-Off" domain="[('type', '=', 'oneoff')]" />
|
||||
<filter name="recurrent" string="Recurrent" domain="[('type', '=', 'recurrent')]" />
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sdd_mandate_action" model="ir.actions.act_window">
|
||||
<field name="name">SEPA Direct Debit Mandates</field>
|
||||
<field name="res_model">sdd.mandate</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Click to create a new SEPA Direct Debit Mandate.
|
||||
</p><p>
|
||||
A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="sdd_mandate_menu"
|
||||
parent="account_payment.menu_main_payment"
|
||||
action="sdd_mandate_action"
|
||||
sequence="20"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,4 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_banking_export_sdd","Full access on banking.export.sdd","model_banking_export_sdd","account_payment.group_account_payment",1,1,1,1
|
||||
"access_sdd_mandate","Full access on sdd.mandate","model_sdd_mandate","account_payment.group_account_payment",1,1,1,1
|
||||
"access_sdd_mandate_read","Read access on sdd.mandate","model_sdd_mandate","base.group_user",1,0,0,0
|
||||
|
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2013 Akretion (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="group_original_mandate_required" model="res.groups">
|
||||
<field name="name">Original Mandate Required (SEPA)</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
27
account_banking_sepa_direct_debit/sepa_direct_debit_demo.xml
Normal file
27
account_banking_sepa_direct_debit/sepa_direct_debit_demo.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="sepa_direct_debit_mode" model="payment.mode">
|
||||
<field name="name">SEPA Direct Debit La Banque Postale</field>
|
||||
<field name="journal" ref="account.bank_journal"/>
|
||||
<field name="bank_id" ref="account_banking_payment_export.main_company_iban"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="type" ref="export_sdd_008_001_02"/>
|
||||
</record>
|
||||
|
||||
<record id="base.main_company" model="res.company">
|
||||
<field name="sepa_creditor_identifier">FR78ZZZ424242</field>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_12_mandate" model="sdd.mandate">
|
||||
<field name="partner_bank_id" ref="account_banking_payment_export.res_partner_12_iban"/>
|
||||
<field name="type">recurrent</field>
|
||||
<field name="recurrent_sequence_type">first</field>
|
||||
<field name="signature_date">2014-02-01</field>
|
||||
<field name="state">valid</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
BIN
account_banking_sepa_direct_debit/static/src/img/icon.png
Normal file
BIN
account_banking_sepa_direct_debit/static/src/img/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
23
account_banking_sepa_direct_debit/wizard/__init__.py
Normal file
23
account_banking_sepa_direct_debit/wizard/__init__.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# SEPA Direct Debit module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from . import export_sdd
|
||||
451
account_banking_sepa_direct_debit/wizard/export_sdd.py
Normal file
451
account_banking_sepa_direct_debit/wizard/export_sdd.py
Normal file
@@ -0,0 +1,451 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# SEPA Direct Debit module for OpenERP
|
||||
# Copyright (C) 2013 Akretion (http://www.akretion.com)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
from openerp.tools.translate import _
|
||||
from openerp import netsvc
|
||||
from datetime import datetime
|
||||
from lxml import etree
|
||||
|
||||
|
||||
class banking_export_sdd_wizard(orm.TransientModel):
|
||||
_name = 'banking.export.sdd.wizard'
|
||||
_inherit = ['banking.export.pain']
|
||||
_description = 'Export SEPA Direct Debit File'
|
||||
_columns = {
|
||||
'state': fields.selection([
|
||||
('create', 'Create'),
|
||||
('finish', 'Finish'),
|
||||
], 'State', readonly=True),
|
||||
'batch_booking': fields.boolean(
|
||||
'Batch Booking',
|
||||
help="If true, the bank statement will display only one credit "
|
||||
"line for all the direct debits of the SEPA file ; if false, "
|
||||
"the bank statement will display one credit line per direct "
|
||||
"debit of the SEPA file."),
|
||||
'charge_bearer': fields.selection([
|
||||
('SLEV', 'Following Service Level'),
|
||||
('SHAR', 'Shared'),
|
||||
('CRED', 'Borne by Creditor'),
|
||||
('DEBT', 'Borne by Debtor'),
|
||||
], 'Charge Bearer', required=True,
|
||||
help="Following service level : transaction charges are to be "
|
||||
"applied following the rules agreed in the service level and/or "
|
||||
"scheme (SEPA Core messages must use this). Shared : transaction "
|
||||
"charges on the creditor side are to be borne by the creditor, "
|
||||
"transaction charges on the debtor side are to be borne by the "
|
||||
"debtor. Borne by creditor : all transaction charges are to be "
|
||||
"borne by the creditor. Borne by debtor : all transaction "
|
||||
"charges are to be borne by the debtor."),
|
||||
'nb_transactions': fields.related(
|
||||
'file_id', 'nb_transactions', type='integer',
|
||||
string='Number of Transactions', readonly=True),
|
||||
'total_amount': fields.related(
|
||||
'file_id', 'total_amount', type='float', string='Total Amount',
|
||||
readonly=True),
|
||||
'file_id': fields.many2one(
|
||||
'banking.export.sdd', 'SDD File', readonly=True),
|
||||
'file': fields.related(
|
||||
'file_id', 'file', string="File", type='binary', readonly=True),
|
||||
'filename': fields.related(
|
||||
'file_id', 'filename', string="Filename", type='char', size=256,
|
||||
readonly=True),
|
||||
'payment_order_ids': fields.many2many(
|
||||
'payment.order', 'wiz_sdd_payorders_rel', 'wizard_id',
|
||||
'payment_order_id', 'Payment Orders', readonly=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'charge_bearer': 'SLEV',
|
||||
'state': 'create',
|
||||
}
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
payment_order_ids = context.get('active_ids', [])
|
||||
vals.update({
|
||||
'payment_order_ids': [[6, 0, payment_order_ids]],
|
||||
})
|
||||
return super(banking_export_sdd_wizard, self).create(
|
||||
cr, uid, vals, context=context)
|
||||
|
||||
def _get_previous_bank(self, cr, uid, payline, context=None):
|
||||
payline_obj = self.pool['payment.line']
|
||||
previous_bank = False
|
||||
payline_ids = payline_obj.search(
|
||||
cr, uid, [
|
||||
('sdd_mandate_id', '=', payline.sdd_mandate_id.id),
|
||||
('bank_id', '!=', payline.bank_id.id),
|
||||
],
|
||||
context=context)
|
||||
if payline_ids:
|
||||
older_lines = payline_obj.browse(
|
||||
cr, uid, payline_ids, context=context)
|
||||
previous_date = False
|
||||
previous_payline_id = False
|
||||
for older_line in older_lines:
|
||||
older_line_date_sent = older_line.order_id.date_sent
|
||||
if (older_line_date_sent
|
||||
and older_line_date_sent > previous_date):
|
||||
previous_date = older_line_date_sent
|
||||
previous_payline_id = older_line.id
|
||||
if previous_payline_id:
|
||||
previous_payline = payline_obj.browse(
|
||||
cr, uid, previous_payline_id, context=context)
|
||||
previous_bank = previous_payline.bank_id
|
||||
return previous_bank
|
||||
|
||||
def create_sepa(self, cr, uid, ids, context=None):
|
||||
'''
|
||||
Creates the SEPA Direct Debit file. That's the important code !
|
||||
'''
|
||||
sepa_export = self.browse(cr, uid, ids[0], context=context)
|
||||
|
||||
pain_flavor = sepa_export.payment_order_ids[0].mode.type.code
|
||||
convert_to_ascii = \
|
||||
sepa_export.payment_order_ids[0].mode.convert_to_ascii
|
||||
if pain_flavor == 'pain.008.001.02':
|
||||
bic_xml_tag = 'BIC'
|
||||
name_maxsize = 70
|
||||
root_xml_tag = 'CstmrDrctDbtInitn'
|
||||
elif pain_flavor == 'pain.008.001.03':
|
||||
bic_xml_tag = 'BICFI'
|
||||
name_maxsize = 140
|
||||
root_xml_tag = 'CstmrDrctDbtInitn'
|
||||
elif pain_flavor == 'pain.008.001.04':
|
||||
bic_xml_tag = 'BICFI'
|
||||
name_maxsize = 140
|
||||
root_xml_tag = 'CstmrDrctDbtInitn'
|
||||
else:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("Payment Type Code '%s' is not supported. The only "
|
||||
"Payment Type Code supported for SEPA Direct Debit "
|
||||
"are 'pain.008.001.02', 'pain.008.001.03' and "
|
||||
"'pain.008.001.04'.") % pain_flavor)
|
||||
|
||||
gen_args = {
|
||||
'bic_xml_tag': bic_xml_tag,
|
||||
'name_maxsize': name_maxsize,
|
||||
'convert_to_ascii': convert_to_ascii,
|
||||
'payment_method': 'DD',
|
||||
'pain_flavor': pain_flavor,
|
||||
'sepa_export': sepa_export,
|
||||
'file_obj': self.pool['banking.export.sdd'],
|
||||
'pain_xsd_file':
|
||||
'account_banking_sepa_direct_debit/data/%s.xsd' % pain_flavor,
|
||||
}
|
||||
|
||||
pain_ns = {
|
||||
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
|
||||
None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor,
|
||||
}
|
||||
|
||||
xml_root = etree.Element('Document', nsmap=pain_ns)
|
||||
pain_root = etree.SubElement(xml_root, root_xml_tag)
|
||||
|
||||
# A. Group header
|
||||
group_header_1_0, nb_of_transactions_1_6, control_sum_1_7 = \
|
||||
self.generate_group_header_block(
|
||||
cr, uid, pain_root, gen_args, context=context)
|
||||
|
||||
transactions_count_1_6 = 0
|
||||
total_amount = 0.0
|
||||
amount_control_sum_1_7 = 0.0
|
||||
lines_per_group = {}
|
||||
# key = (requested_date, priority, sequence type)
|
||||
# value = list of lines as objects
|
||||
# Iterate on payment orders
|
||||
today = fields.date.context_today(self, cr, uid, context=context)
|
||||
for payment_order in sepa_export.payment_order_ids:
|
||||
total_amount = total_amount + payment_order.total
|
||||
# Iterate each payment lines
|
||||
for line in payment_order.line_ids:
|
||||
transactions_count_1_6 += 1
|
||||
priority = line.priority
|
||||
if payment_order.date_prefered == 'due':
|
||||
requested_date = line.ml_maturity_date or today
|
||||
elif payment_order.date_prefered == 'fixed':
|
||||
requested_date = payment_order.date_scheduled or today
|
||||
else:
|
||||
requested_date = today
|
||||
if not line.sdd_mandate_id:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("Missing SEPA Direct Debit mandate on the payment "
|
||||
"line with partner '%s' and Invoice ref '%s'.")
|
||||
% (line.partner_id.name,
|
||||
line.ml_inv_ref.number))
|
||||
if line.sdd_mandate_id.state != 'valid':
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The SEPA Direct Debit mandate with reference '%s' "
|
||||
"for partner '%s' has expired.")
|
||||
% (line.sdd_mandate_id.unique_mandate_reference,
|
||||
line.sdd_mandate_id.partner_id.name))
|
||||
if line.sdd_mandate_id.type == 'oneoff':
|
||||
if not line.sdd_mandate_id.last_debit_date:
|
||||
seq_type = 'OOFF'
|
||||
else:
|
||||
raise orm.except_orm(
|
||||
_('Error:'),
|
||||
_("The mandate with reference '%s' for partner "
|
||||
"'%s' has type set to 'One-Off' and it has a "
|
||||
"last debit date set to '%s', so we can't use "
|
||||
"it.")
|
||||
% (line.sdd_mandate_id.unique_mandate_reference,
|
||||
line.sdd_mandate_id.partner_id.name,
|
||||
line.sdd_mandate_id.last_debit_date))
|
||||
elif line.sdd_mandate_id.type == 'recurrent':
|
||||
seq_type_map = {
|
||||
'recurring': 'RCUR',
|
||||
'first': 'FRST',
|
||||
'final': 'FNAL',
|
||||
}
|
||||
seq_type_label = \
|
||||
line.sdd_mandate_id.recurrent_sequence_type
|
||||
assert seq_type_label is not False
|
||||
seq_type = seq_type_map[seq_type_label]
|
||||
|
||||
key = (requested_date, priority, seq_type)
|
||||
if key in lines_per_group:
|
||||
lines_per_group[key].append(line)
|
||||
else:
|
||||
lines_per_group[key] = [line]
|
||||
# Write requested_exec_date on 'Payment date' of the pay line
|
||||
if requested_date != line.date:
|
||||
self.pool['payment.line'].write(
|
||||
cr, uid, line.id,
|
||||
{'date': requested_date}, context=context)
|
||||
|
||||
for (requested_date, priority, sequence_type), lines in \
|
||||
lines_per_group.items():
|
||||
# B. Payment info
|
||||
payment_info_2_0, nb_of_transactions_2_4, control_sum_2_5 = \
|
||||
self.generate_start_payment_info_block(
|
||||
cr, uid, pain_root,
|
||||
"sepa_export.payment_order_ids[0].reference + '-' + "
|
||||
"sequence_type + '-' + requested_date.replace('-', '') "
|
||||
"+ '-' + priority",
|
||||
priority, 'CORE', sequence_type, requested_date, {
|
||||
'sepa_export': sepa_export,
|
||||
'sequence_type': sequence_type,
|
||||
'priority': priority,
|
||||
'requested_date': requested_date,
|
||||
}, gen_args, context=context)
|
||||
|
||||
self.generate_party_block(
|
||||
cr, uid, payment_info_2_0, 'Cdtr', 'B',
|
||||
'sepa_export.payment_order_ids[0].mode.bank_id.partner_id.'
|
||||
'name',
|
||||
'sepa_export.payment_order_ids[0].mode.bank_id.acc_number',
|
||||
'sepa_export.payment_order_ids[0].mode.bank_id.bank.bic',
|
||||
{'sepa_export': sepa_export},
|
||||
gen_args, context=context)
|
||||
|
||||
charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr')
|
||||
charge_bearer_2_24.text = sepa_export.charge_bearer
|
||||
|
||||
creditor_scheme_identification_2_27 = etree.SubElement(
|
||||
payment_info_2_0, 'CdtrSchmeId')
|
||||
self.generate_creditor_scheme_identification(
|
||||
cr, uid, creditor_scheme_identification_2_27,
|
||||
'sepa_export.payment_order_ids[0].company_id.'
|
||||
'sepa_creditor_identifier',
|
||||
'SEPA Creditor Identifier', {'sepa_export': sepa_export},
|
||||
'SEPA', gen_args, context=context)
|
||||
|
||||
transactions_count_2_4 = 0
|
||||
amount_control_sum_2_5 = 0.0
|
||||
for line in lines:
|
||||
transactions_count_2_4 += 1
|
||||
# C. Direct Debit Transaction Info
|
||||
dd_transaction_info_2_28 = etree.SubElement(
|
||||
payment_info_2_0, 'DrctDbtTxInf')
|
||||
payment_identification_2_29 = etree.SubElement(
|
||||
dd_transaction_info_2_28, 'PmtId')
|
||||
end2end_identification_2_31 = etree.SubElement(
|
||||
payment_identification_2_29, 'EndToEndId')
|
||||
end2end_identification_2_31.text = self._prepare_field(
|
||||
cr, uid, 'End to End Identification', 'line.name',
|
||||
{'line': line}, 35,
|
||||
gen_args=gen_args, context=context)
|
||||
currency_name = self._prepare_field(
|
||||
cr, uid, 'Currency Code', 'line.currency.name',
|
||||
{'line': line}, 3, gen_args=gen_args,
|
||||
context=context)
|
||||
instructed_amount_2_44 = etree.SubElement(
|
||||
dd_transaction_info_2_28, 'InstdAmt', Ccy=currency_name)
|
||||
instructed_amount_2_44.text = '%.2f' % line.amount_currency
|
||||
amount_control_sum_1_7 += line.amount_currency
|
||||
amount_control_sum_2_5 += line.amount_currency
|
||||
dd_transaction_2_46 = etree.SubElement(
|
||||
dd_transaction_info_2_28, 'DrctDbtTx')
|
||||
mandate_related_info_2_47 = etree.SubElement(
|
||||
dd_transaction_2_46, 'MndtRltdInf')
|
||||
mandate_identification_2_48 = etree.SubElement(
|
||||
mandate_related_info_2_47, 'MndtId')
|
||||
mandate_identification_2_48.text = self._prepare_field(
|
||||
cr, uid, 'Unique Mandate Reference',
|
||||
'line.sdd_mandate_id.unique_mandate_reference',
|
||||
{'line': line}, 35,
|
||||
gen_args=gen_args, context=context)
|
||||
mandate_signature_date_2_49 = etree.SubElement(
|
||||
mandate_related_info_2_47, 'DtOfSgntr')
|
||||
mandate_signature_date_2_49.text = self._prepare_field(
|
||||
cr, uid, 'Mandate Signature Date',
|
||||
'line.sdd_mandate_id.signature_date',
|
||||
{'line': line}, 10,
|
||||
gen_args=gen_args, context=context)
|
||||
if sequence_type == 'FRST' and (
|
||||
line.sdd_mandate_id.last_debit_date or
|
||||
not line.sdd_mandate_id.sepa_migrated):
|
||||
previous_bank = self._get_previous_bank(
|
||||
cr, uid, line, context=context)
|
||||
if previous_bank or not line.sdd_mandate_id.sepa_migrated:
|
||||
amendment_indicator_2_50 = etree.SubElement(
|
||||
mandate_related_info_2_47, 'AmdmntInd')
|
||||
amendment_indicator_2_50.text = 'true'
|
||||
amendment_info_details_2_51 = etree.SubElement(
|
||||
mandate_related_info_2_47, 'AmdmntInfDtls')
|
||||
if previous_bank:
|
||||
if previous_bank.bank.bic == line.bank_id.bank.bic:
|
||||
ori_debtor_account_2_57 = etree.SubElement(
|
||||
amendment_info_details_2_51, 'OrgnlDbtrAcct')
|
||||
ori_debtor_account_id = etree.SubElement(
|
||||
ori_debtor_account_2_57, 'Id')
|
||||
ori_debtor_account_iban = etree.SubElement(
|
||||
ori_debtor_account_id, 'IBAN')
|
||||
ori_debtor_account_iban.text = self._validate_iban(
|
||||
cr, uid, self._prepare_field(
|
||||
cr, uid, 'Original Debtor Account',
|
||||
'previous_bank.acc_number',
|
||||
{'previous_bank': previous_bank},
|
||||
gen_args=gen_args,
|
||||
context=context),
|
||||
context=context)
|
||||
else:
|
||||
ori_debtor_agent_2_58 = etree.SubElement(
|
||||
amendment_info_details_2_51, 'OrgnlDbtrAgt')
|
||||
ori_debtor_agent_institution = etree.SubElement(
|
||||
ori_debtor_agent_2_58, 'FinInstnId')
|
||||
ori_debtor_agent_bic = etree.SubElement(
|
||||
ori_debtor_agent_institution, bic_xml_tag)
|
||||
ori_debtor_agent_bic.text = self._prepare_field(
|
||||
cr, uid, 'Original Debtor Agent',
|
||||
'previous_bank.bank.bic',
|
||||
{'previous_bank': previous_bank},
|
||||
gen_args=gen_args,
|
||||
context=context)
|
||||
ori_debtor_agent_other = etree.SubElement(
|
||||
ori_debtor_agent_institution, 'Othr')
|
||||
ori_debtor_agent_other_id = etree.SubElement(
|
||||
ori_debtor_agent_other, 'Id')
|
||||
ori_debtor_agent_other_id.text = 'SMNDA'
|
||||
# SMNDA = Same Mandate New Debtor Agent
|
||||
elif not line.sdd_mandate_id.sepa_migrated:
|
||||
ori_mandate_identification_2_52 = etree.SubElement(
|
||||
amendment_info_details_2_51, 'OrgnlMndtId')
|
||||
ori_mandate_identification_2_52.text = \
|
||||
self._prepare_field(
|
||||
cr, uid, 'Original Mandate Identification',
|
||||
'line.sdd_mandate_id.'
|
||||
'original_mandate_identification',
|
||||
{'line': line},
|
||||
gen_args=gen_args,
|
||||
context=context)
|
||||
ori_creditor_scheme_id_2_53 = etree.SubElement(
|
||||
amendment_info_details_2_51, 'OrgnlCdtrSchmeId')
|
||||
self.generate_creditor_scheme_identification(
|
||||
cr, uid, ori_creditor_scheme_id_2_53,
|
||||
'sepa_export.payment_order_ids[0].company_id.'
|
||||
'original_creditor_identifier',
|
||||
'Original Creditor Identifier',
|
||||
{'sepa_export': sepa_export},
|
||||
'SEPA', gen_args, context=context)
|
||||
|
||||
self.generate_party_block(
|
||||
cr, uid, dd_transaction_info_2_28, 'Dbtr', 'C',
|
||||
'line.partner_id.name',
|
||||
'line.bank_id.acc_number',
|
||||
'line.bank_id.bank.bic',
|
||||
{'line': line}, gen_args, context=context)
|
||||
|
||||
self.generate_remittance_info_block(
|
||||
cr, uid, dd_transaction_info_2_28,
|
||||
line, gen_args, context=context)
|
||||
|
||||
nb_of_transactions_2_4.text = str(transactions_count_2_4)
|
||||
control_sum_2_5.text = '%.2f' % amount_control_sum_2_5
|
||||
nb_of_transactions_1_6.text = str(transactions_count_1_6)
|
||||
control_sum_1_7.text = '%.2f' % amount_control_sum_1_7
|
||||
|
||||
return self.finalize_sepa_file_creation(
|
||||
cr, uid, ids, xml_root, total_amount, transactions_count_1_6,
|
||||
gen_args, context=context)
|
||||
|
||||
def cancel_sepa(self, cr, uid, ids, context=None):
|
||||
'''
|
||||
Cancel the SEPA file: just drop the file
|
||||
'''
|
||||
sepa_export = self.browse(cr, uid, ids[0], context=context)
|
||||
self.pool.get('banking.export.sdd').unlink(
|
||||
cr, uid, sepa_export.file_id.id, context=context)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
def save_sepa(self, cr, uid, ids, context=None):
|
||||
'''
|
||||
Save the SEPA Direct Debit file: mark all payments in the file
|
||||
as 'sent'. Write 'last debit date' on mandate and set oneoff
|
||||
mandate to expired
|
||||
'''
|
||||
sepa_export = self.browse(cr, uid, ids[0], context=context)
|
||||
self.pool.get('banking.export.sdd').write(
|
||||
cr, uid, sepa_export.file_id.id, {'state': 'sent'},
|
||||
context=context)
|
||||
wf_service = netsvc.LocalService('workflow')
|
||||
for order in sepa_export.payment_order_ids:
|
||||
wf_service.trg_validate(uid, 'payment.order', order.id, 'done', cr)
|
||||
mandate_ids = [line.sdd_mandate_id.id for line in order.line_ids]
|
||||
self.pool['sdd.mandate'].write(
|
||||
cr, uid, mandate_ids,
|
||||
{'last_debit_date': datetime.today().strftime('%Y-%m-%d')},
|
||||
context=context)
|
||||
to_expire_ids = []
|
||||
first_mandate_ids = []
|
||||
for line in order.line_ids:
|
||||
if line.sdd_mandate_id.type == 'oneoff':
|
||||
to_expire_ids.append(line.sdd_mandate_id.id)
|
||||
elif line.sdd_mandate_id.type == 'recurrent':
|
||||
seq_type = line.sdd_mandate_id.recurrent_sequence_type
|
||||
if seq_type == 'final':
|
||||
to_expire_ids.append(line.sdd_mandate_id.id)
|
||||
elif seq_type == 'first':
|
||||
first_mandate_ids.append(line.sdd_mandate_id.id)
|
||||
self.pool['sdd.mandate'].write(
|
||||
cr, uid, to_expire_ids, {'state': 'expired'}, context=context)
|
||||
self.pool['sdd.mandate'].write(
|
||||
cr, uid, first_mandate_ids, {
|
||||
'recurrent_sequence_type': 'recurring',
|
||||
'sepa_migrated': True,
|
||||
}, context=context)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
37
account_banking_sepa_direct_debit/wizard/export_sdd_view.xml
Normal file
37
account_banking_sepa_direct_debit/wizard/export_sdd_view.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2010-2012 Akretion (http://www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="banking_export_sdd_wizard_view" model="ir.ui.view">
|
||||
<field name="name">banking.export.sdd.wizard.view</field>
|
||||
<field name="model">banking.export.sdd.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="SEPA Direct Debit XML file generation">
|
||||
<field name="state" invisible="True"/>
|
||||
<group states="create">
|
||||
<field name="batch_booking" />
|
||||
<field name="charge_bearer" />
|
||||
</group>
|
||||
<group states="finish">
|
||||
<field name="total_amount" />
|
||||
<field name="nb_transactions" />
|
||||
<field name="file" filename="filename" />
|
||||
<field name="filename" invisible="True"/>
|
||||
</group>
|
||||
<group>
|
||||
<button string="Generate" name="create_sepa" type="object" states="create"/>
|
||||
<button string="Cancel" special="cancel" states="create"/>
|
||||
<button string="Validate" name="save_sepa" type="object" states="finish"/>
|
||||
<button string="Cancel" name="cancel_sepa" type="object" states="finish"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -31,7 +31,7 @@
|
||||
'author': 'Therp BV / Smile',
|
||||
'website': 'https://launchpad.net/banking-addons',
|
||||
'category': 'Banking addons',
|
||||
'depends': ['account_banking'],
|
||||
'depends': ['account_banking', 'account_banking_payment_export'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'view/account_payment.xml',
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<record model="ir.ui.view" id="view_payment_mode_form">
|
||||
<field name="name">payment.mode.form add transfer account</field>
|
||||
<field name="model">payment.mode</field>
|
||||
<field name="inherit_id" ref="account_banking.view_payment_mode_form_inherit"/>
|
||||
<field name="inherit_id" ref="account_banking_payment_export.view_payment_mode_form_inherit"/>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="type" position="after">
|
||||
|
||||
@@ -21,5 +21,11 @@
|
||||
<field name="condition">test_undo_done()</field>
|
||||
<field name="signal">undo_done</field>
|
||||
</record>
|
||||
<!-- the done signal continues to work but goes to sent -->
|
||||
<record id="account_banking.trans_open_done" model="workflow.transition">
|
||||
<field name="act_from" ref="account_payment.act_open"/>
|
||||
<field name="act_to" ref="account_banking.act_sent"/>
|
||||
<field name="signal">done</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
Reference in New Issue
Block a user