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

# 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)