mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
[MERGE] account_banking_fi_patu: added finish patu parser - thanks to Sami Haahtinen
[FIX] account_banking_nl_clieop: added forgotten danish translation file.
This commit is contained in:
30
account_banking_fi_patu/__init__.py
Normal file
30
account_banking_fi_patu/__init__.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2010 Sami Haahtinen (<http://ressukka.net>).
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# All Rights Reserved
|
||||
#
|
||||
# WARNING: This program as such is intended to be used by professional
|
||||
# programmers who take the whole responsability of assessing all potential
|
||||
# consequences resulting from its eventual inadequacies and bugs
|
||||
# End users who are looking for a ready-to-use solution with commercial
|
||||
# garantees and support are strongly adviced to contract EduSense BV
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
import patu
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
42
account_banking_fi_patu/__terp__.py
Normal file
42
account_banking_fi_patu/__terp__.py
Normal file
@@ -0,0 +1,42 @@
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2010 Sami Haahtinen (<http://ressukka.net>).
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# All Rights Reserved
|
||||
#
|
||||
# WARNING: This program as such is intended to be used by professional
|
||||
# programmers who take the whole responsability of assessing all potential
|
||||
# consequences resulting from its eventual inadequacies and bugs
|
||||
# End users who are looking for a ready-to-use solution with commercial
|
||||
# garantees and support are strongly adviced to contract EduSense BV
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
'name': 'Account Banking PATU module',
|
||||
'version': '0.1',
|
||||
'license': 'GPL-3',
|
||||
'author': 'Sami Haahtinen',
|
||||
'website': 'http://ressukka.net',
|
||||
'category': 'Account Banking',
|
||||
'depends': ['account_banking'],
|
||||
'description': '''
|
||||
Module to import Finnish PATU format transation files.
|
||||
|
||||
This modules contains no logic, just an import filter for account_banking.
|
||||
''',
|
||||
'active': False,
|
||||
'installable': True,
|
||||
}
|
||||
227
account_banking_fi_patu/parser.py
Normal file
227
account_banking_fi_patu/parser.py
Normal file
@@ -0,0 +1,227 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
"""Parser for PATU format files"""
|
||||
import re, datetime
|
||||
|
||||
def fixchars(line):
|
||||
"""Fix the characters mangled in the input
|
||||
|
||||
:param line: Line to rewrite
|
||||
|
||||
:returns: string, fixed line
|
||||
"""
|
||||
# Fix the umlauts int the input
|
||||
line = line.replace("{", u"ä")
|
||||
line = line.replace("}", u"ö")
|
||||
# XXX: There are a whole bunch of these, adding them later
|
||||
return line
|
||||
|
||||
|
||||
class PatuParser(object):
|
||||
"""Parse PATU lines in to structs"""
|
||||
|
||||
def __init__( self ):
|
||||
""" Initialize PATU parser """
|
||||
|
||||
recparse = dict()
|
||||
recparse["00"] = "T(?P<recordid>00)(?P<record_len>\d{3})" \
|
||||
+ "(?P<version>\d{3})(?P<accountnr>\d{14})" \
|
||||
+ "(?P<statementnr>\d{3})(?P<startdate>\d{6})" \
|
||||
+ "(?P<enddate>\d{6})" \
|
||||
+ "(?P<creationdate>\d{6})(?P<creationtime>\d{4})" \
|
||||
+ "(?P<customerid>.{17})(?P<balancedate>\d{6})" \
|
||||
+ "(?P<startingbalance>.{19})" \
|
||||
+ "(?P<itemcount>\d{6})(?P<currency>.{3})" \
|
||||
+ "(?P<accountname>.{30})"\
|
||||
+ "(?P<accountlimit>\d{18})(?P<accountowner>.{35})" \
|
||||
+ "(?P<bankcontact1>.{40})(?P<bankcontact2>.{40})" \
|
||||
+ "(?P<bankcontact3>.{30})(?P<ibanswift>.{30})"
|
||||
recparse["10"] = "T(?P<recordid>[18]0)(?P<record_len>\d{3})" \
|
||||
+ "(?P<eventid>\d{6})" \
|
||||
+ "(?P<archivalnr>.{18})(?P<recorddate>\d{6})" \
|
||||
+ "(?P<valuedate>\d{6})" \
|
||||
+ "(?P<paymentdate>\d{6})(?P<eventtype>\d)" \
|
||||
+ "(?P<eventcode>.{3})(?P<eventdesc>.{35})" \
|
||||
+ "(?P<amount>.{19})(?P<receiptcode>.)(?P<creationmethod>.)" \
|
||||
+ "(?P<recipientname>.{35})(?P<recipientsource>.)" \
|
||||
+ "(?P<recipientaccount>.{14})(?P<recipientaccountchanged>.)" \
|
||||
+ "(?P<refnr>.{20})" \
|
||||
+ "(?P<formnr>.{8})(?P<eventlevel>.)"
|
||||
recparse["11"] = "T(?P<recordid>[18]1)(?P<record_len>\d{3})" \
|
||||
+ "(?P<infotype>.{2})" \
|
||||
+ "(?:(?# Match specific info)" \
|
||||
+ "(?<=00)(?P<message>.{35})+" \
|
||||
+ "|" \
|
||||
+ "(?<=01)(?P<transactioncount>\d{8})" \
|
||||
+ "|" \
|
||||
+ "(?<=02)(?P<customerid>.{10})\s(?P<invoicenr>.{15})\s" \
|
||||
+ "(?P<invoicedate>\d{6})" \
|
||||
+ "|" \
|
||||
+ "(?<=03)(?P<cardnumber>.{19})\s(?P<storereference>.{14})" \
|
||||
+ "|" \
|
||||
+ "(?<=04)(?P<origarchiveid>.{18})" \
|
||||
+ "|" \
|
||||
+ "(?<=05)(?P<destinationamount>.{19})\s(?P<currency>.{3})\s" \
|
||||
+ "(?P<exchangerate>.{11})(?P<rateref>.{6})" \
|
||||
+ "|" \
|
||||
+ "(?<=06)(?P<principalinfo1>.{35})(?P<principalinfo2>.{35})" \
|
||||
+ "|" \
|
||||
+ "(?<=07)(?P<bankinfo1>.{35})" \
|
||||
+ "(?P<bankinfo2>.{35})?" \
|
||||
+ "(?P<bankinfo3>.{35})?" \
|
||||
+ "(?P<bankinfo4>.{35})?" \
|
||||
+ "(?P<bankinfo5>.{35})?" \
|
||||
+ "(?P<bankinfo6>.{35})?" \
|
||||
+ "(?P<bankinfo7>.{35})?" \
|
||||
+ "(?P<bankinfo8>.{35})?" \
|
||||
+ "(?P<bankinfo9>.{35})?" \
|
||||
+ "(?P<bankinfo10>.{35})?" \
|
||||
+ "(?P<bankinfo11>.{35})?" \
|
||||
+ "(?P<bankinfo12>.{35})?" \
|
||||
+ "|" \
|
||||
+ "(?<=08)(?P<paymentcode>\d{3})\s(?P<paymentdesc>.{31})" \
|
||||
+ "|" \
|
||||
+ "(?<=09)(?P<recipientname2>.{35})" \
|
||||
+ "|" \
|
||||
+ "(?<=11)(?P<reference>.{35})(?P<recipientiban>.{35})" \
|
||||
+ "(?P<recipientbic>.{35})(?P<recipientnameiban>.{70})" \
|
||||
+ "(?P<sendername>.{70})(?P<senderid>.{35})" \
|
||||
+ "(?P<archivalid>.{70})" \
|
||||
+ ")"
|
||||
recparse["40"] = "T(?P<recordid>40)(?P<record_len>\d{3})" \
|
||||
+ "(?P<recorddate>\d{6})(?P<balance>.{19})" \
|
||||
+ "(?P<availablefunds>.{19})"
|
||||
recparse["50"] = "T(?P<recordid>50)(?P<record_len>\d{3})" \
|
||||
+ "(?P<period>\d)(?P<perioddate>\d{6})" \
|
||||
+ "(?P<depositcount>\d{8})(?P<depositsum>.{19})" \
|
||||
+ "(?P<withdrawcount>\d{8})(?P<withdrawsum>.{19})"
|
||||
recparse["60"] = "T(?P<recordid>60)(?P<record_len>\d{3})" \
|
||||
+ "(?P<bankid>.{3})(?P<specialid>01)" \
|
||||
+ "(?P<interestperiodstart>\d{6})-" \
|
||||
+ "(?P<interestperiodend>\d{6})" \
|
||||
+ "(?P<avgbalanceinfo>.)(?P<avgbalance>.{19})" \
|
||||
+ "(?P<interestinfo>.)(?P<interestrate>\d{7})" \
|
||||
+ "(?P<limitbalanceinfo>.)(?P<avglimitbalance>.{19})" \
|
||||
+ "(?P<limitinterestinfo>.)(?P<limitinterestrate>\d{7})" \
|
||||
+ "(?P<limitusageinfo>.)(?P<limitusage>\d{7})" \
|
||||
+ "(?P<permanentbalanceinfo>.)(?P<permanentbalance>.{19})" \
|
||||
+ "(?P<refinterestinfo>.)(?P<refinterestname>.{35})" \
|
||||
+ "(?P<refinterestrate>\d{7})" \
|
||||
+ "(?P<refcreditinfo>.)(?P<refcreditname>.{35})" \
|
||||
+ "(?P<refcreditrate>\d{7})"
|
||||
recparse["70"] = "T(?P<recordid>70)(?P<record_len>\d{3})" \
|
||||
+ "(?P<bankid>\d{3})" \
|
||||
+ "(?P<infoline1>.{80})" \
|
||||
+ "(?P<infoline2>.{80})?" \
|
||||
+ "(?P<infoline3>.{80})?" \
|
||||
+ "(?P<infoline4>.{80})?" \
|
||||
+ "(?P<infoline5>.{80})?" \
|
||||
+ "(?P<infoline6>.{80})?"
|
||||
for record in recparse:
|
||||
recparse[record] = re.compile(recparse[record])
|
||||
self.recparse = recparse
|
||||
|
||||
|
||||
def parse_record(self, line):
|
||||
"""Docstring for parse_perus
|
||||
|
||||
:param line: description
|
||||
|
||||
:returns: description
|
||||
"""
|
||||
line = fixchars(line)
|
||||
for matcher in self.recparse:
|
||||
matchobj = self.recparse[matcher].match(line)
|
||||
if matchobj:
|
||||
break
|
||||
if not matchobj:
|
||||
print " **** failed to match line '%s'" % (line)
|
||||
return
|
||||
# Strip strings
|
||||
matchdict = matchobj.groupdict()
|
||||
|
||||
# Remove members set to None
|
||||
for field in matchdict.keys():
|
||||
if not matchdict[field]:
|
||||
del matchdict[field]
|
||||
|
||||
matchkeys = set(matchdict.keys())
|
||||
needstrip = set(["bankcontact1", "bankcontact2", "bankcontact3",
|
||||
"customerid", "accountowner", "accountname", "refnr", "formnr",
|
||||
"recipientname", "eventdesc", "recipientaccount", "message",
|
||||
"principalinfo1", "bankinfo1", "bankinfo2", "bankinfo3",
|
||||
"bankinfo4", "bankinfo5", "bankinfo6", "bankinfo7", "bankinfo8",
|
||||
"bankinfo9", "bankinfo10", "bankinfo11", "bankinfo12",
|
||||
"principalinfo2", "paymentdesc", "infoline1", "infoline2",
|
||||
"infoline3", "infoline4", "infoline5", "infoline6",
|
||||
"recipientname2", "recipientnameiban", "sendername"])
|
||||
for field in matchkeys & needstrip:
|
||||
matchdict[field] = matchdict[field].strip()
|
||||
# Convert to int
|
||||
needsint = set(["itemcount", "eventid", "record_len",
|
||||
"depositcount", "withdrawcount"])
|
||||
for field in matchkeys & needsint:
|
||||
matchdict[field] = float(matchdict[field])
|
||||
# Convert to float
|
||||
needsfloat = set(["startingbalance", "accountlimit", "amount",
|
||||
"destinationamount", "balance", "availablefunds", "depositsum",
|
||||
"withdrawsum", "avgbalance", "avglimitbalance",
|
||||
"permanentbalance"])
|
||||
for field in matchkeys & needsfloat:
|
||||
matchdict[field] = float(matchdict[field])
|
||||
# convert sents to euros
|
||||
needseur = set(["startingbalance", "accountlimit", "amount",
|
||||
"destinationamount", "balance", "availablefunds", "depositsum",
|
||||
"withdrawsum", "avgbalance", "permanentbalance"])
|
||||
for field in matchkeys & needseur:
|
||||
matchdict[field] = matchdict[field] / 100
|
||||
# convert ibanswift to separate fields
|
||||
if matchdict.has_key("ibanswift"):
|
||||
matchdict["iban"], matchdict["swift"] = \
|
||||
matchdict["ibanswift"].strip().split()
|
||||
|
||||
# Convert date fields
|
||||
needdate = set(["startdate", "enddate", "creationdate", "balancedate",
|
||||
"valuedate", "paymentdate", "recorddate", "perioddate"])
|
||||
for field in matchkeys & needdate:
|
||||
# Base all dates on the year 2000, since it's unlikely that this
|
||||
# starndard will survive to see 2020 due to SEPA
|
||||
datestring = matchdict[field]
|
||||
if datestring == '000000':
|
||||
matchdict[field] = None
|
||||
continue
|
||||
|
||||
matchdict[field] = datetime.date(int("20" + datestring[0:2]),
|
||||
int(datestring[2:4]), int(datestring[4:6]))
|
||||
# convert time fields
|
||||
needtime = set(["creationtime"])
|
||||
for field in matchkeys & needtime:
|
||||
timestring = matchdict[field]
|
||||
matchdict[field] = datetime.time(int(timestring[0:2]),
|
||||
int(timestring[2:4]))
|
||||
|
||||
return matchdict
|
||||
|
||||
def parse_file(filename):
|
||||
"""Parse file with PATU format inside
|
||||
|
||||
:param filename: description
|
||||
|
||||
:returns: description
|
||||
"""
|
||||
patufile = open(filename, "r")
|
||||
parser = PatuParser()
|
||||
for line in patufile:
|
||||
parser.parse_record(line)
|
||||
|
||||
def main():
|
||||
"""The main function, currently just calls a dummy filename
|
||||
|
||||
:returns: description
|
||||
"""
|
||||
parse_file("myinput.nda")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
139
account_banking_fi_patu/patu.py
Normal file
139
account_banking_fi_patu/patu.py
Normal file
@@ -0,0 +1,139 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (C) 2010 Sami Haahtinen (<http://ressukka.net>).
|
||||
# Copyright (C) 2009 EduSense BV (<http://www.edusense.nl>).
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
'''
|
||||
This parser implements the PATU format support. PATU format is a generic format
|
||||
used by finnish banks.
|
||||
'''
|
||||
from account_banking.parsers import models
|
||||
from tools.translate import _
|
||||
from account_banking_fi_patu.parser import PatuParser
|
||||
|
||||
__all__ = ['parser']
|
||||
|
||||
class transaction(models.mem_bank_transaction):
|
||||
'''
|
||||
Implementation of transaction communication class for account_banking.
|
||||
'''
|
||||
mapping = {
|
||||
"remote_account": "recipientaccount",
|
||||
"remote_currency": "currency",
|
||||
"transferred_amount": "amount",
|
||||
"execution_date": "recorddate",
|
||||
"effective_date": "paymentdate",
|
||||
"transfer_type": "eventtype",
|
||||
"reference": "refnr",
|
||||
"eventcode": "eventcode",
|
||||
"message": "message"}
|
||||
def __init__(self, record, *args, **kwargs):
|
||||
'''
|
||||
Initialize own dict with read values.
|
||||
'''
|
||||
super(transaction, self).__init__(*args, **kwargs)
|
||||
for key in self.mapping:
|
||||
try:
|
||||
setattr(self, key, record[self.mapping[key]])
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def is_valid(self):
|
||||
'''
|
||||
Override validity checks.
|
||||
There are certain situations for PATU which can be validated as
|
||||
invalid, but are normal.
|
||||
If eventcode is 730, the transaction was initiated by the bank and
|
||||
doesn't have a destination account.
|
||||
'''
|
||||
if self.eventcode and (self.eventcode == "720" or self.eventcode ==
|
||||
"710"):
|
||||
# Withdrawal from and deposit to the account
|
||||
return (self.execution_date and self.transferred_amount and True) \
|
||||
or False
|
||||
|
||||
if self.eventcode and self.eventcode == "730":
|
||||
# The transaction is bank initiated, no remote account is present
|
||||
return (self.execution_date and self.transferred_amount and True) \
|
||||
or False
|
||||
|
||||
return super(transaction, self).is_valid()
|
||||
|
||||
class statement(models.mem_bank_statement):
|
||||
'''
|
||||
Implementation of bank_statement communication class of account_banking
|
||||
'''
|
||||
def __init__(self, record, *args, **kwargs):
|
||||
'''
|
||||
Set decent start values based on first transaction read
|
||||
'''
|
||||
super(statement, self).__init__(*args, **kwargs)
|
||||
self.id = record["statementnr"]
|
||||
self.local_account = self.convert_bank_account(record["accountnr"])
|
||||
self.date = record["creationdate"]
|
||||
self.start_balance = record["startingbalance"]
|
||||
|
||||
def convert_bank_account(self, accountnr):
|
||||
"""Convert bank account number in to a abbreviated format used in
|
||||
finland"""
|
||||
bank = accountnr[:6]
|
||||
account = accountnr[6:].lstrip("0")
|
||||
return "%s-%s" % (bank, account)
|
||||
|
||||
def import_transaction(self, record):
|
||||
'''
|
||||
Import a transaction to the statement
|
||||
'''
|
||||
if record["recordid"] == "40":
|
||||
self.end_balance = record["balance"]
|
||||
elif record["recordid"] == "10" or record["recordid"] == "80":
|
||||
# XXX: Sum up entries that have detailed records set for them. For
|
||||
# now, ignore the parent entry
|
||||
if record["receiptcode"] == "E":
|
||||
return
|
||||
self.transactions.append(transaction(record))
|
||||
|
||||
class parser(models.parser):
|
||||
code = 'FIPATU'
|
||||
name = _('PATU statement sheet')
|
||||
doc = _('''\
|
||||
PATU statement format defines one or more statements in each file. This parser
|
||||
will parse all statements in a file and import them to OpenERP
|
||||
''')
|
||||
|
||||
def parse(self, data):
|
||||
result = []
|
||||
stmnt = None
|
||||
patuparser = PatuParser()
|
||||
for line in data.splitlines():
|
||||
# Skip empty (last) lines
|
||||
if not line:
|
||||
continue
|
||||
record = patuparser.parse_record(line)
|
||||
if record["recordid"] == "00":
|
||||
# New statement
|
||||
stmnt = statement(record)
|
||||
result.append(stmnt)
|
||||
else:
|
||||
stmnt.import_transaction(record)
|
||||
result.append(stmnt)
|
||||
return result
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
348
account_banking_nl_clieop/i18n/da.po
Normal file
348
account_banking_nl_clieop/i18n/da.po
Normal file
@@ -0,0 +1,348 @@
|
||||
# Danish translation for account-banking
|
||||
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
|
||||
# This file is distributed under the same license as the account-banking package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: account-banking\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-01-08 15:36+0000\n"
|
||||
"PO-Revision-Date: 2010-02-06 14:41+0000\n"
|
||||
"Last-Translator: nanker <Unknown>\n"
|
||||
"Language-Team: Danish <da@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: 2010-06-09 10:04+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,init,batchtype:0
|
||||
msgid "Direct Debits"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,create,testcode:0
|
||||
#: code:addons/account_banking_nl_clieop/account_banking_clieop.py:0
|
||||
#: code:addons/account_banking_nl_clieop/wizard/export_clieop.py:0
|
||||
#: selection:banking.export.clieop,testcode:0
|
||||
#, python-format
|
||||
msgid "No"
|
||||
msgstr "Nej"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:ir.module.module,shortdesc:account_banking_nl_clieop.module_meta_information
|
||||
msgid "Account Banking NL ClieOp"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,no_transactions:0
|
||||
#: field:banking.export.clieop,no_transactions:0
|
||||
msgid "Number of Transactions"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:ir.actions.wizard,name:account_banking_nl_clieop.wizard_account_banking_export_clieop
|
||||
msgid "Export ClieOp File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,prefered_date:0
|
||||
#: field:banking.export.clieop,prefered_date:0
|
||||
msgid "Prefered Processing Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:payment.type,name:account_banking_nl_clieop.export_clieop_pay
|
||||
msgid "ClieOp3 Payment Batch"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: field:banking.export.clieop,state:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: help:account_banking_nl_clieop.banking_export_clieop,init,test:0
|
||||
msgid ""
|
||||
"Select this if you want your bank to run a test process rather then execute "
|
||||
"your orders for real."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:banking.export.clieop,state:0
|
||||
msgid "Draft"
|
||||
msgstr "Udkast"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: view:banking.export.clieop:0
|
||||
msgid "Processing Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: help:account_banking_nl_clieop.banking_export_clieop,init,fixed_message:0
|
||||
msgid ""
|
||||
"A fixed message to apply to all transactions in addition to the individual "
|
||||
"messages."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,check_no_accounts:0
|
||||
#: field:banking.export.clieop,check_no_accounts:0
|
||||
msgid "Check Number Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_button:account_banking_nl_clieop.banking_export_clieop,create,save:0
|
||||
msgid "Save"
|
||||
msgstr "Gem"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,init,batchtype:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:banking.export.clieop,state:0
|
||||
msgid "Sent"
|
||||
msgstr "Sendt"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,log:0
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: view:banking.export.clieop:0
|
||||
msgid "ClieOp Information"
|
||||
msgstr "ClieOp information"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:ir.model,name:account_banking_nl_clieop.model_banking_export_clieop
|
||||
msgid "ClieOp3 Export"
|
||||
msgstr "ClieOp3 eksport"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: code:addons/account_banking_nl_clieop/wizard/export_clieop.py:0
|
||||
#, python-format
|
||||
msgid "You can only combine payment orders of the same type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,create,filetype:0
|
||||
#: selection:banking.export.clieop,filetype:0
|
||||
msgid "Salary Payment Batch"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:banking.export.clieop,state:0
|
||||
msgid "Reconciled"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_view:account_banking_nl_clieop.banking_export_clieop,init:0
|
||||
msgid "Reference for further communication"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: field:banking.export.clieop,duplicates:0
|
||||
msgid "Number of Duplicates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: help:account_banking_nl_clieop.banking_export_clieop,init,reference:0
|
||||
msgid ""
|
||||
"The bank will use this reference in feedback communication to refer to this "
|
||||
"run. Only five characters are available."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_view:account_banking_nl_clieop.banking_export_clieop,init:0
|
||||
msgid "Processing Details"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:payment.type,name:account_banking_nl_clieop.export_clieop_sal
|
||||
msgid "ClieOp3 Salary Payment Batch"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_button:account_banking_nl_clieop.banking_export_clieop,init,create:0
|
||||
msgid "Create"
|
||||
msgstr "Opret"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,create,filetype:0
|
||||
#: selection:banking.export.clieop,filetype:0
|
||||
msgid "Direct Debit Batch"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,file:0
|
||||
#: field:banking.export.clieop,file:0
|
||||
msgid "ClieOp File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: code:addons/account_banking_nl_clieop/wizard/export_clieop.py:0
|
||||
#, python-format
|
||||
msgid "You can't create ClieOp orders more than 30 days in advance."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,init,execution_date:0
|
||||
msgid "Execution Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,init,fixed_message:0
|
||||
msgid "Fixed Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,filetype:0
|
||||
#: field:banking.export.clieop,filetype:0
|
||||
msgid "File Type"
|
||||
msgstr "Filtype"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:payment.type,name:account_banking_nl_clieop.export_clieop_inc
|
||||
msgid "ClieOp3 Direct Debit Batch"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,testcode:0
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,init,test:0
|
||||
#: field:banking.export.clieop,testcode:0
|
||||
msgid "Test Run"
|
||||
msgstr "Testkørsel"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,init,batchtype:0
|
||||
msgid "Payments"
|
||||
msgstr "Betalinger"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: code:addons/account_banking_nl_clieop/wizard/export_clieop.py:0
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr "Fejl"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,init,batchtype:0
|
||||
msgid "Salary Payments"
|
||||
msgstr "Lønudbetalinger"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_view:account_banking_nl_clieop.banking_export_clieop,create:0
|
||||
#: wizard_view:account_banking_nl_clieop.banking_export_clieop,init:0
|
||||
#: view:banking.export.clieop:0
|
||||
msgid "Client Opdrachten Export"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_view:account_banking_nl_clieop.banking_export_clieop,init:0
|
||||
msgid "Additional message for all transactions"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:ir.actions.act_window,name:account_banking_nl_clieop.action_account_banking_clieops
|
||||
#: model:ir.ui.menu,name:account_banking_nl_clieop.menu_action_account_banking_exported_clieop_files
|
||||
msgid "Generated ClieOp3 Files"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: model:ir.module.module,description:account_banking_nl_clieop.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" Module to export payment orders in ClieOp format.\n"
|
||||
"\n"
|
||||
" ClieOp format is used by Dutch banks to batch national bank transfers.\n"
|
||||
" This module uses the account_banking logic.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,init,reference:0
|
||||
msgid "Reference"
|
||||
msgstr "Reference"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: help:account_banking_nl_clieop.banking_export_clieop,init,execution_date:0
|
||||
msgid ""
|
||||
"This is the date the file should be processed by the bank. Don't choose a "
|
||||
"date beyond the nearest date in your payments. The latest allowed date is 30 "
|
||||
"days from now.\n"
|
||||
"Please keep in mind that banks only execute on working days and typically "
|
||||
"use a delay of two days between execution date and effective transfer date."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: field:banking.export.clieop,payment_order_ids:0
|
||||
msgid "Payment Orders"
|
||||
msgstr "Betalingsordrer"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: view:banking.export.clieop:0
|
||||
msgid "General Information"
|
||||
msgstr "Generel information"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,total_amount:0
|
||||
#: field:banking.export.clieop,total_amount:0
|
||||
msgid "Total Amount"
|
||||
msgstr "Totalt beløb"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: field:banking.export.clieop,daynumber:0
|
||||
msgid "ClieOp Transaction nr of the Day"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_button:account_banking_nl_clieop.banking_export_clieop,create,cancel:0
|
||||
#: wizard_button:account_banking_nl_clieop.banking_export_clieop,init,end:0
|
||||
msgid "Cancel"
|
||||
msgstr "Annuller"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: wizard_field:account_banking_nl_clieop.banking_export_clieop,create,identification:0
|
||||
#: field:banking.export.clieop,identification:0
|
||||
msgid "Identification"
|
||||
msgstr "Identifikation"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,create,testcode:0
|
||||
#: code:addons/account_banking_nl_clieop/account_banking_clieop.py:0
|
||||
#: code:addons/account_banking_nl_clieop/wizard/export_clieop.py:0
|
||||
#: selection:banking.export.clieop,testcode:0
|
||||
#, python-format
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: selection:account_banking_nl_clieop.banking_export_clieop,create,filetype:0
|
||||
#: selection:banking.export.clieop,filetype:0
|
||||
msgid "Payment Batch"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_banking_nl_clieop
|
||||
#: field:banking.export.clieop,date_generated:0
|
||||
msgid "Generation Date"
|
||||
msgstr ""
|
||||
Reference in New Issue
Block a user