You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
6.0 KiB
188 lines
6.0 KiB
# Copyright 2019 ForgeFlow, S.L.
|
|
# Copyright 2020 CorporateHub (https://corporatehub.eu)
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class AccountBankStatementImportSheetMapping(models.Model):
|
|
_name = 'account.bank.statement.import.sheet.mapping'
|
|
_description = 'Account Bank Statement Import Sheet Mapping'
|
|
|
|
name = fields.Char(
|
|
required=True,
|
|
)
|
|
float_thousands_sep = fields.Selection(
|
|
string='Thousands Separator',
|
|
selection=[
|
|
('dot', 'dot (.)'),
|
|
('comma', 'comma (,)'),
|
|
('none', 'none'),
|
|
],
|
|
default='dot',
|
|
)
|
|
float_decimal_sep = fields.Selection(
|
|
string='Decimals Separator',
|
|
selection=[
|
|
('dot', 'dot (.)'),
|
|
('comma', 'comma (,)'),
|
|
('none', 'none'),
|
|
],
|
|
default='comma',
|
|
)
|
|
file_encoding = fields.Selection(
|
|
string='Encoding',
|
|
selection=[
|
|
('utf-8', 'UTF-8'),
|
|
('utf-8-sig', 'UTF-8 (with BOM)'),
|
|
('utf-16', 'UTF-16'),
|
|
('utf-16-sig', 'UTF-16 (with BOM)'),
|
|
('windows-1252', 'Western (Windows-1252)'),
|
|
('iso-8859-1', 'Western (Latin-1 / ISO 8859-1)'),
|
|
('iso-8859-2', 'Central European (Latin-2 / ISO 8859-2)'),
|
|
('iso-8859-4', 'Baltic (Latin-4 / ISO 8859-4)'),
|
|
('big5', 'Traditional Chinese (big5)'),
|
|
('gb18030', 'Unified Chinese (gb18030)'),
|
|
('shift_jis', 'Japanese (Shift JIS)'),
|
|
('windows-1251', 'Cyrillic (Windows-1251)'),
|
|
('koi8_r', 'Cyrillic (KOI8-R)'),
|
|
('koi8_u', 'Cyrillic (KOI8-U)'),
|
|
],
|
|
default='utf-8',
|
|
)
|
|
delimiter = fields.Selection(
|
|
string='Delimiter',
|
|
selection=[
|
|
('dot', 'dot (.)'),
|
|
('comma', 'comma (,)'),
|
|
('semicolon', 'semicolon (;)'),
|
|
('tab', 'tab'),
|
|
('space', 'space'),
|
|
('n/a', 'N/A'),
|
|
],
|
|
default='comma',
|
|
)
|
|
quotechar = fields.Char(
|
|
string='Text qualifier',
|
|
size=1,
|
|
default='"',
|
|
)
|
|
timestamp_format = fields.Char(
|
|
string='Timestamp Format',
|
|
required=True,
|
|
)
|
|
timestamp_column = fields.Char(
|
|
string='Timestamp column',
|
|
required=True,
|
|
)
|
|
currency_column = fields.Char(
|
|
string='Currency column',
|
|
help=(
|
|
'In case statement is multi-currency, column to get currency of '
|
|
'transaction from'
|
|
),
|
|
)
|
|
amount_column = fields.Char(
|
|
string='Amount column',
|
|
required=True,
|
|
help='Amount of transaction in journal\'s currency',
|
|
)
|
|
balance_column = fields.Char(
|
|
string='Balance column',
|
|
help='Balance after transaction in journal\'s currency',
|
|
)
|
|
original_currency_column = fields.Char(
|
|
string='Original currency column',
|
|
help=(
|
|
'In case statement provides original currency for transactions '
|
|
'with automatic currency conversion, column to get original '
|
|
'currency of transaction from'
|
|
),
|
|
)
|
|
original_amount_column = fields.Char(
|
|
string='Original amount column',
|
|
help=(
|
|
'In case statement provides original currency for transactions '
|
|
'with automatic currency conversion, column to get original '
|
|
'transaction amount in original transaction currency from'
|
|
),
|
|
)
|
|
debit_credit_column = fields.Char(
|
|
string='Debit/credit column',
|
|
help=(
|
|
'Some statement formats use absolute amount value and indicate sign'
|
|
'of the transaction by specifying if it was a debit or a credit one'
|
|
),
|
|
)
|
|
debit_value = fields.Char(
|
|
string='Debit value',
|
|
help='Value of debit/credit column that indicates if it\'s a debit',
|
|
default='D',
|
|
)
|
|
credit_value = fields.Char(
|
|
string='Credit value',
|
|
help='Value of debit/credit column that indicates if it\'s a credit',
|
|
default='C',
|
|
)
|
|
transaction_id_column = fields.Char(
|
|
string='Unique transaction ID column',
|
|
)
|
|
description_column = fields.Char(
|
|
string='Description column',
|
|
)
|
|
notes_column = fields.Char(
|
|
string='Notes column',
|
|
)
|
|
reference_column = fields.Char(
|
|
string='Reference column',
|
|
)
|
|
partner_name_column = fields.Char(
|
|
string='Partner Name column',
|
|
)
|
|
bank_name_column = fields.Char(
|
|
string='Bank Name column',
|
|
help='Partner\'s bank',
|
|
)
|
|
bank_account_column = fields.Char(
|
|
string='Bank Account column',
|
|
help='Partner\'s bank account',
|
|
)
|
|
|
|
@api.onchange('float_thousands_sep')
|
|
def onchange_thousands_separator(self):
|
|
if 'dot' == self.float_thousands_sep == self.float_decimal_sep:
|
|
self.float_decimal_sep = 'comma'
|
|
elif 'comma' == self.float_thousands_sep == self.float_decimal_sep:
|
|
self.float_decimal_sep = 'dot'
|
|
|
|
@api.onchange('float_decimal_sep')
|
|
def onchange_decimal_separator(self):
|
|
if 'dot' == self.float_thousands_sep == self.float_decimal_sep:
|
|
self.float_thousands_sep = 'comma'
|
|
elif 'comma' == self.float_thousands_sep == self.float_decimal_sep:
|
|
self.float_thousands_sep = 'dot'
|
|
|
|
@api.multi
|
|
def _get_float_separators(self):
|
|
self.ensure_one()
|
|
separators = {
|
|
'dot': '.',
|
|
'comma': ',',
|
|
'none': '',
|
|
}
|
|
return (separators[self.float_thousands_sep],
|
|
separators[self.float_decimal_sep])
|
|
|
|
@api.model
|
|
def _decode_column_delimiter_character(self, delimiter):
|
|
return ({
|
|
'dot': '.',
|
|
'comma': ',',
|
|
'semicolon': ';',
|
|
'tab': '\t',
|
|
'space': ' ',
|
|
}).get(delimiter)
|
|
|
|
@api.multi
|
|
def _get_column_delimiter_character(self):
|
|
return self._decode_column_delimiter_character(self.delimiter)
|