mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
Merge pull request #318 from vrenaville/port_v9_currency_rate_update
V9 : Port Currency Rate update
This commit is contained in:
@@ -31,6 +31,7 @@ The module is able to use the following sources:
|
||||
Updated daily
|
||||
|
||||
6. Bank of Canada
|
||||
(WARNING: Currently not working)
|
||||
|
||||
7. National Bank of Romania (Banca Nationala a Romaniei)
|
||||
|
||||
@@ -63,6 +64,9 @@ currency found in database.
|
||||
Know issues / Roadmap
|
||||
=====================
|
||||
|
||||
To fix:
|
||||
* Bank of Canada
|
||||
|
||||
Roadmap:
|
||||
* Google Finance.
|
||||
* Updated daily from Citibank N.A., source in EUR. Information may be delayed.
|
||||
@@ -74,8 +78,7 @@ Bug Tracker
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-financial-tools/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
|
||||
`here <https://github.com/OCA/account-financial-tools/issues/new?body=module:%20currency_rate_update%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback.
|
||||
|
||||
|
||||
Credits
|
||||
@@ -84,14 +87,27 @@ Credits
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* Nicolas Bessi <nicolas.bessi@camptocamp.com>
|
||||
* Jean-Baptiste Aubort <jean-baptiste.aubort@camptocamp.com>
|
||||
* Joël Grand-Guillaume <joel.grandguillaume@camptocamp.com>
|
||||
* JB Aubort
|
||||
* Grzegorz Grzelak <grzegorz.grzelak@openglobe.pl> (ECB, NBP)
|
||||
* Alexis de Lattre <alexis@via.ecp.fr>
|
||||
* Vincent Renaville <vincent.renaville@camptocamp.com>
|
||||
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
|
||||
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
|
||||
* Lorenzo Battistini <lorenzo.battistini@agilebg.com> (Port to V7)
|
||||
* Agustin Cruz <openpyme.mx> (BdM)
|
||||
* Dorin Hongu <dhongu@gmail.com> (BNR)
|
||||
* Jacque-Etienne Baudoux <je@bcim.be>
|
||||
* Juan Jose Scarafia <jjscarafia@paintballrosario.com.ar>
|
||||
* Mathieu Benoi <mathben963@gmail.com>
|
||||
* Fekete Mihai <feketemihai@gmail.com> (Port to V8)
|
||||
* Dorin Hongu <dhongu@gmail.com> (BNR)
|
||||
* Paul McDermott
|
||||
* Alexis de Lattre <alexis@via.ecp.fr>
|
||||
* Miku Laitinen
|
||||
* Assem Bayahi
|
||||
* Daniel Dico <ddico@oerp.ca> (BOC)
|
||||
* Dmytro Katyukha <firemage.dima@gmail.com>
|
||||
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
@@ -1,22 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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 model
|
||||
from .services.currency_getter_interface import CurrencyGetterInterface
|
||||
|
||||
@@ -1,26 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
# © 2008-2016 Camptocamp
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
{
|
||||
"name": "Currency Rate Update",
|
||||
"version": "8.0.0.7.0",
|
||||
"version": "9.0.1.0.0",
|
||||
"author": "Camptocamp,Odoo Community Association (OCA)",
|
||||
"website": "http://camptocamp.com",
|
||||
"license": "AGPL-3",
|
||||
@@ -36,7 +19,7 @@
|
||||
"security/rule.xml",
|
||||
"security/ir.model.access.csv",
|
||||
],
|
||||
"images": [],
|
||||
"demo": [],
|
||||
"active": False,
|
||||
'installable': False
|
||||
'installable': True
|
||||
}
|
||||
|
||||
@@ -1,23 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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 currency_rate_update
|
||||
from . import company
|
||||
|
||||
@@ -1,58 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
# © 2009-2016 Camptocamp
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from openerp import models, fields, api
|
||||
|
||||
|
||||
class res_company(models.Model):
|
||||
class ResCompany(models.Model):
|
||||
"""override company to add currency update"""
|
||||
|
||||
@api.multi
|
||||
def _compute_multi_curr_enable(self):
|
||||
"check if multi company currency is enabled"
|
||||
company_currency = self.env['res.currency'].search([('company_id',
|
||||
'!=', False)])
|
||||
for company in self:
|
||||
company.multi_company_currency_enable = \
|
||||
1 if company_currency else 0
|
||||
|
||||
@api.one
|
||||
def button_refresh_currency(self):
|
||||
"""Refresh the currencies rates !!for all companies now"""
|
||||
self.services_to_use.refresh_currency()
|
||||
|
||||
_inherit = "res.company"
|
||||
|
||||
@api.multi
|
||||
def button_refresh_currency(self):
|
||||
"""Refresh the currencies rates"""
|
||||
self.ensure_one()
|
||||
self.services_to_use.refresh_currency()
|
||||
|
||||
# Activate the currency update
|
||||
auto_currency_up = fields.Boolean(
|
||||
string='Automatic Update',
|
||||
help="Automatic update of the currencies for this company")
|
||||
# Function field that allows to know the
|
||||
# multi company currency implementation
|
||||
multi_company_currency_enable = fields.Boolean(
|
||||
string='Multi company currency', translate=True,
|
||||
compute="_compute_multi_curr_enable",
|
||||
help="When this option is unchecked it will allow users "
|
||||
"to set a distinct currency updates on each company."
|
||||
)
|
||||
# List of services to fetch rates
|
||||
services_to_use = fields.One2many(
|
||||
'currency.rate.update.service',
|
||||
|
||||
@@ -1,23 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
# © 2009-2016 Camptocamp
|
||||
# © 2010 Akretion
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
import logging
|
||||
|
||||
@@ -27,7 +11,8 @@ from dateutil.relativedelta import relativedelta
|
||||
from openerp import models, fields, api, _
|
||||
from openerp import exceptions
|
||||
|
||||
from ..services.currency_getter import Currency_getter_factory
|
||||
from ..services.currency_getter_interface import CurrencyGetterType
|
||||
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -37,103 +22,8 @@ _intervalTypes = {
|
||||
'months': lambda interval: relativedelta(months=interval),
|
||||
}
|
||||
|
||||
supported_currency_array = [
|
||||
"AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN",
|
||||
"BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL",
|
||||
"BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY",
|
||||
"COP", "CRC", "CUP", "CVE", "CYP", "CZK", "DJF", "DKK", "DOP", "DZD",
|
||||
"EEK", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP",
|
||||
"GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG",
|
||||
"HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD",
|
||||
"JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD",
|
||||
"KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD",
|
||||
"MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MTL", "MUR", "MVR",
|
||||
"MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD",
|
||||
"OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON",
|
||||
"RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP",
|
||||
"SLL", "SOS", "SPL", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS",
|
||||
"TMM", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX",
|
||||
"USD", "UYU", "UZS", "VEB", "VEF", "VND", "VUV", "WST", "XAF", "XAG",
|
||||
"XAU", "XCD", "XDR", "XOF", "XPD", "XPF", "XPT", "YER", "ZAR", "ZMK",
|
||||
"ZWD"
|
||||
]
|
||||
|
||||
YAHOO_supported_currency_array = [
|
||||
"AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN",
|
||||
"BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL",
|
||||
"BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLF", "CLP",
|
||||
"CNH", "CNY", "COP", "CRC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP",
|
||||
"DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHS",
|
||||
"GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF",
|
||||
"IDR", "IEP", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY",
|
||||
"KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK",
|
||||
"LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA",
|
||||
"MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MXV",
|
||||
"MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB",
|
||||
"PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB",
|
||||
"RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS",
|
||||
"SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP",
|
||||
"TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF",
|
||||
"VND", "VUV", "WST", "XAF", "XAG", "XAU", "XCD", "XCP", "XDR", "XOF",
|
||||
"XPD", "XPF", "XPT", "YER", "ZAR", "ZMW", "ZWL"]
|
||||
|
||||
RO_BNR_supported_currency_array = [
|
||||
"AED", "AUD", "BGN", "BRL", "CAD", "CHF", "CNY", "CZK", "DKK", "EGP",
|
||||
"EUR", "GBP", "HUF", "INR", "JPY", "KRW", "MDL", "MXN", "NOK", "NZD",
|
||||
"PLN", "RON", "RSD", "RUB", "SEK", "TRY", "UAH", "USD", "XAU", "XDR",
|
||||
"ZAR"]
|
||||
|
||||
CA_BOC_supported_currency_array = [
|
||||
"AED", "ANG", "ARS", "AUD", "BOC", "BRL", "BSD", "CHF", "CLP", "CNY",
|
||||
"COP", "CZK", "DKK", "EUR", "FJD", "GBP", "GHS", "GTQ", "HKD", "HNL",
|
||||
"HRK", "HUF", "IDR", "ILS", "INR", "ISK", "JMD", "JPY", "KRW", "LKR",
|
||||
"MAD", "MMK", "MXN", "MYR", "NOK", "NZD", "PAB", "PEN", "PHP", "PKR",
|
||||
"PLN", "RON", "RSD", "RUB", "SEK", "SGD", "THB", "TND", "TRY", "TTD",
|
||||
"TWD", "USD", "VEF", "VND", "XAF", "XCD", "XPF", "ZAR"]
|
||||
|
||||
CH_ADMIN_supported_currency_array = [
|
||||
"AED", "ALL", "ARS", "AUD", "AZN", "BAM", "BDT", "BGN", "BHD", "BRL",
|
||||
"CAD", "CHF", "CLP", "CNY", "COP", "CRC", "CZK", "DKK", "DOP", "EGP",
|
||||
"ETB", "EUR", "GBP", "GTQ", "HKD", "HNL", "HRK", "HUF", "IDR", "ILS",
|
||||
"INR", "ISK", "JPY", "KES", "KHR", "KRW", "KWD", "KYD", "KZT", "LBP",
|
||||
"LKR", "LTL", "LVL", "LYD", "MAD", "MUR", "MXN", "MYR", "NGN", "NOK",
|
||||
"NZD", "OMR", "PAB", "PEN", "PHP", "PKR", "PLN", "QAR", "RON", "RSD",
|
||||
"RUB", "SAR", "SEK", "SGD", "THB", "TND", "TRY", "TWD", "TZS", "UAH",
|
||||
"USD", "UYU", "VEF", "VND", "ZAR"]
|
||||
|
||||
ECB_supported_currency_array = [
|
||||
"AUD", "BGN", "BRL", "CAD", "CHF", "CNY", "CZK", "DKK", "EUR", "GBP",
|
||||
"HKD", "HRK", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "LTL", "MXN",
|
||||
"MYR", "NOK", "NZD", "PHP", "PLN", "RON", "RUB", "SEK", "SGD", "THB",
|
||||
"TRY", "USD", "ZAR"]
|
||||
|
||||
MX_BdM_supported_currency_array = [
|
||||
"ARS", "AUD", "BBD", "BMD", "BOB", "BRL", "BSD", "BZD", "CAD", "CHF",
|
||||
"CLP", "CNH", "CNY", "COP", "CRC", "CUP", "CZK", "DKK", "DOP", "DZD",
|
||||
"EGP", "ESD", "EUR", "FJD", "GBP", "GTQ", "GYD", "HKD", "HNL", "HUF",
|
||||
"IDR", "ILS", "INR", "IQD", "JMD", "JPY", "KES", "KRW", "KWD", "MAD",
|
||||
"MYR", "NGN", "NIC", "NOK", "NZD", "PAB", "PEN", "PHP", "PLN", "PYG",
|
||||
"RON", "RUB", "SAR", "SEK", "SGD", "SVC", "THB", "TRY", "TTD", "TWD",
|
||||
"UAH", "USD", "USD", "UYP", "VEF", "VND", "ZAR"]
|
||||
|
||||
PL_NBP_supported_currency_array = [
|
||||
"AUD", "BGN", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR",
|
||||
"GBP", "HKD", "HRK", "HUF", "IDR", "ILS", "INR", "ISK", "JPY", "KRW",
|
||||
"LTL", "MXN", "MYR", "NOK", "NZD", "PHP", "PLN", "RON", "RUB", "SEK",
|
||||
"SGD", "THB", "TRY", "UAH", "USD", "XDR", "ZAR"]
|
||||
|
||||
supported_currecies = {
|
||||
'YAHOO_getter': YAHOO_supported_currency_array,
|
||||
'ECB_getter': ECB_supported_currency_array,
|
||||
'RO_BNR_getter': RO_BNR_supported_currency_array,
|
||||
'CA_BOC_getter': CA_BOC_supported_currency_array,
|
||||
'CH_ADMIN_getter': CH_ADMIN_supported_currency_array,
|
||||
'MX_BdM_getter': MX_BdM_supported_currency_array,
|
||||
'PL_NBP_getter': PL_NBP_supported_currency_array,
|
||||
}
|
||||
|
||||
|
||||
class Currency_rate_update_service(models.Model):
|
||||
class CurrencyRateUpdateService(models.Model):
|
||||
"""Class keep services and currencies that
|
||||
have to be updated"""
|
||||
_name = "currency.rate.update.service"
|
||||
@@ -163,39 +53,19 @@ class Currency_rate_update_service(models.Model):
|
||||
currency_list = ''
|
||||
if self.service:
|
||||
currencies = []
|
||||
currency_list = supported_currency_array
|
||||
company_id = False
|
||||
if self.company_id.multi_company_currency_enable:
|
||||
company_id = self.company_id.id
|
||||
currency_list = supported_currecies[self.service]
|
||||
if company_id:
|
||||
currencies = self.env['res.currency'].search(
|
||||
[('name', 'in', currency_list),
|
||||
'|', ('company_id', '=', company_id),
|
||||
('company_id', '=', False)])
|
||||
else:
|
||||
currencies = self.env['res.currency'].search(
|
||||
[('name', 'in', currency_list),
|
||||
('company_id', '=', False)])
|
||||
getter = CurrencyGetterType.get(self.service)
|
||||
currency_list = getter.supported_currency_array
|
||||
currencies = self.env['res.currency'].search(
|
||||
[('name', 'in', currency_list)])
|
||||
self.currency_list = [(6, 0, [curr.id for curr in currencies])]
|
||||
|
||||
def _selection_service(self, *a, **k):
|
||||
res = [(x.code, x.name) for x in CurrencyGetterType.getters.values()]
|
||||
return res
|
||||
|
||||
# List of webservicies the value sould be a class name
|
||||
service = fields.Selection(
|
||||
[('CH_ADMIN_getter', 'Admin.ch'),
|
||||
('ECB_getter', 'European Central Bank'),
|
||||
('YAHOO_getter', 'Yahoo Finance'),
|
||||
# Added for polish rates
|
||||
('PL_NBP_getter', 'National Bank of Poland'),
|
||||
# Added for mexican rates
|
||||
('MX_BdM_getter', 'Bank of Mexico'),
|
||||
# Bank of Canada is using RSS-CB
|
||||
# http://www.cbwiki.net/wiki/index.php/Specification_1.1
|
||||
# This RSS format is used by other national banks
|
||||
# (Thailand, Malaysia, Mexico...)
|
||||
('CA_BOC_getter', 'Bank of Canada - noon rates'),
|
||||
# Added for romanian rates
|
||||
('RO_BNR_getter', 'National Bank of Romania')
|
||||
],
|
||||
_selection_service,
|
||||
string="Webservice to use",
|
||||
required=True)
|
||||
# List of currencies available on webservice
|
||||
@@ -243,24 +113,15 @@ class Currency_rate_update_service(models.Model):
|
||||
_logger.info(
|
||||
'Starting to refresh currencies with service %s (company: %s)',
|
||||
self.service, self.company_id.name)
|
||||
factory = Currency_getter_factory()
|
||||
curr_obj = self.env['res.currency']
|
||||
rate_obj = self.env['res.currency.rate']
|
||||
company = self.company_id
|
||||
# The multi company currency can be set or no so we handle
|
||||
# The two case
|
||||
if company.auto_currency_up:
|
||||
main_currency = curr_obj.search(
|
||||
[('base', '=', True), ('company_id', '=', company.id)],
|
||||
limit=1)
|
||||
main_currency = self.company_id.currency_id
|
||||
if not main_currency:
|
||||
# If we can not find a base currency for this company
|
||||
# we look for one with no company set
|
||||
main_currency = curr_obj.search(
|
||||
[('base', '=', True), ('company_id', '=', False)],
|
||||
limit=1)
|
||||
if not main_currency:
|
||||
raise exceptions.Warning(_('There is no base currency set!'))
|
||||
raise exceptions.Warning(_('There is no main '
|
||||
'currency defined!'))
|
||||
if main_currency.rate != 1:
|
||||
raise exceptions.Warning(_('Base currency rate should '
|
||||
'be 1.00!'))
|
||||
@@ -268,9 +129,8 @@ class Currency_rate_update_service(models.Model):
|
||||
try:
|
||||
# We initalize the class that will handle the request
|
||||
# and return a dict of rate
|
||||
getter = factory.register(self.service)
|
||||
curr_to_fetch = map(lambda x: x.name,
|
||||
self.currency_to_update)
|
||||
getter = CurrencyGetterType.get(self.service)
|
||||
curr_to_fetch = [x.name for x in self.currency_to_update]
|
||||
res, log_info = getter.get_updated_currency(
|
||||
curr_to_fetch,
|
||||
main_currency.name,
|
||||
@@ -322,6 +182,7 @@ class Currency_rate_update_service(models.Model):
|
||||
_intervalTypes[str(self.interval_type)]
|
||||
(self.interval_number)).date()
|
||||
self.next_run = next_run
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def run_currency_update(self):
|
||||
|
||||
@@ -1,20 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
# Note, that CA_BOC getter seems not to be working
|
||||
from . import update_service_CA_BOC
|
||||
from . import update_service_CH_ADMIN
|
||||
from . import update_service_ECB
|
||||
from . import update_service_YAHOO
|
||||
from . import update_service_PL_NBP
|
||||
from . import update_service_MX_BdM
|
||||
from . import update_service_RO_BNR
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
class AbstractClassError(Exception):
|
||||
def __str__(self):
|
||||
return 'Abstract Class'
|
||||
|
||||
def __repr__(self):
|
||||
return 'Abstract Class'
|
||||
|
||||
|
||||
class AbstractMethodError(Exception):
|
||||
def __str__(self):
|
||||
return 'Abstract Method'
|
||||
|
||||
def __repr__(self):
|
||||
return 'Abstract Method'
|
||||
|
||||
|
||||
class UnknowClassError(Exception):
|
||||
def __str__(self):
|
||||
return 'Unknown Class'
|
||||
|
||||
def __repr__(self):
|
||||
return 'Unknown Class'
|
||||
|
||||
|
||||
class UnsuportedCurrencyError(Exception):
|
||||
def __init__(self, value):
|
||||
self.curr = value
|
||||
|
||||
def __str__(self):
|
||||
return 'Unsupported currency %s' % self.curr
|
||||
|
||||
def __repr__(self):
|
||||
return 'Unsupported currency %s' % self.curr
|
||||
|
||||
|
||||
class Currency_getter_factory():
|
||||
"""Factory pattern class that will return
|
||||
a currency getter class base on the name passed
|
||||
to the register method
|
||||
|
||||
"""
|
||||
def register(self, class_name):
|
||||
allowed = [
|
||||
'CH_ADMIN_getter',
|
||||
'PL_NBP_getter',
|
||||
'ECB_getter',
|
||||
'GOOGLE_getter',
|
||||
'YAHOO_getter',
|
||||
'MX_BdM_getter',
|
||||
'CA_BOC_getter',
|
||||
'RO_BNR_getter',
|
||||
]
|
||||
if class_name in allowed:
|
||||
exec "from .update_service_%s import %s" % \
|
||||
(class_name.replace('_getter', ''), class_name)
|
||||
class_def = eval(class_name)
|
||||
return class_def()
|
||||
else:
|
||||
raise UnknowClassError
|
||||
@@ -1,23 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
# © 2008-2016 Camptocamp
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
import logging
|
||||
|
||||
@@ -63,8 +46,55 @@ class UnsuportedCurrencyError(Exception):
|
||||
return 'Unsupported currency %s' % self.curr
|
||||
|
||||
|
||||
class Currency_getter_interface(object):
|
||||
"Abstract class of currency getter"
|
||||
class CurrencyGetterType(type):
|
||||
""" Meta class for currency getters.
|
||||
Automaticaly registers new curency getter on class definition
|
||||
"""
|
||||
getters = {}
|
||||
|
||||
def __new__(mcs, name, bases, attrs):
|
||||
cls = super(CurrencyGetterType, mcs).__new__(mcs, name, bases, attrs)
|
||||
if getattr(cls, 'code', None):
|
||||
mcs.getters[cls.code] = cls
|
||||
return cls
|
||||
|
||||
@classmethod
|
||||
def get(mcs, code, *args, **kwargs):
|
||||
""" Get getter by code
|
||||
"""
|
||||
return mcs.getters[code](*args, **kwargs)
|
||||
|
||||
|
||||
class CurrencyGetterInterface(object):
|
||||
""" Abstract class of currency getter
|
||||
|
||||
To create new getter, just subclass this class
|
||||
and define class variables 'code' and 'name'
|
||||
and implement *get_updated_currency* method
|
||||
|
||||
For example::
|
||||
|
||||
from openerp.addons.currency_rate_update \
|
||||
import CurrencyGetterInterface
|
||||
|
||||
class MySuperCurrencyGetter(CurrencyGetterInterface):
|
||||
code = "MSCG"
|
||||
name = "My Currency Rates"
|
||||
supported_currency_array = ['USD', 'EUR']
|
||||
|
||||
def get_updated_currency(self, currency_array, main_currency,
|
||||
max_delta_days):
|
||||
# your code that fills self.updated_currency
|
||||
|
||||
# and return result
|
||||
return self.updated_currency, self.log_info
|
||||
|
||||
"""
|
||||
__metaclass__ = CurrencyGetterType
|
||||
|
||||
# attributes required for currency getters
|
||||
code = None # code for service selection
|
||||
name = None # displayed name
|
||||
|
||||
log_info = " "
|
||||
|
||||
|
||||
@@ -1,26 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# Abstract class to fetch rates from Bank of Canada
|
||||
#
|
||||
# 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 .currency_getter_interface import Currency_getter_interface
|
||||
# © 2009 Camptocamp
|
||||
# © 2014 Daniel Dico
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from .currency_getter_interface import CurrencyGetterInterface
|
||||
|
||||
from openerp import _
|
||||
from openerp.exceptions import except_orm
|
||||
@@ -29,11 +12,26 @@ import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CA_BOC_getter(Currency_getter_interface):
|
||||
class CA_BOCGetter(CurrencyGetterInterface):
|
||||
"""Implementation of Curreny_getter_factory interface
|
||||
for Bank of Canada RSS service
|
||||
|
||||
"""
|
||||
# Bank of Canada is using RSS-CB
|
||||
# http://www.cbwiki.net/wiki/index.php/Specification_1.1
|
||||
# This RSS format is used by other national banks
|
||||
# (Thailand, Malaysia, Mexico...)
|
||||
|
||||
code = 'CA_BOC'
|
||||
name = 'Bank of Canada - noon rates'
|
||||
|
||||
supported_currency_array = [
|
||||
"AED", "ANG", "ARS", "AUD", "BOC", "BRL", "BSD", "CHF", "CLP", "CNY",
|
||||
"COP", "CZK", "DKK", "EUR", "FJD", "GBP", "GHS", "GTQ", "HKD", "HNL",
|
||||
"HRK", "HUF", "IDR", "ILS", "INR", "ISK", "JMD", "JPY", "KRW", "LKR",
|
||||
"MAD", "MMK", "MXN", "MYR", "NOK", "NZD", "PAB", "PEN", "PHP", "PKR",
|
||||
"PLN", "RON", "RSD", "RUB", "SEK", "SGD", "THB", "TND", "TRY", "TTD",
|
||||
"TWD", "USD", "VEF", "VND", "XAF", "XCD", "XPF", "ZAR"]
|
||||
|
||||
def get_updated_currency(self, currency_array, main_currency,
|
||||
max_delta_days):
|
||||
|
||||
@@ -1,26 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# Abstract class to fetch rates from Swiss Federal Authorities
|
||||
#
|
||||
# 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 .currency_getter_interface import Currency_getter_interface
|
||||
# © 2008 Camptocamp
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from .currency_getter_interface import CurrencyGetterInterface
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
@@ -28,11 +10,24 @@ from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CH_ADMIN_getter(Currency_getter_interface):
|
||||
class CH_ADMINGetter(CurrencyGetterInterface):
|
||||
"""Implementation of Currency_getter_factory interface
|
||||
for Admin.ch service.
|
||||
"""
|
||||
|
||||
code = 'CH_ADMIN'
|
||||
name = 'Admin.ch'
|
||||
|
||||
supported_currency_array = [
|
||||
"AED", "ALL", "ARS", "AUD", "AZN", "BAM", "BDT", "BGN", "BHD", "BRL",
|
||||
"CAD", "CHF", "CLP", "CNY", "COP", "CRC", "CZK", "DKK", "DOP", "EGP",
|
||||
"ETB", "EUR", "GBP", "GTQ", "HKD", "HNL", "HRK", "HUF", "IDR", "ILS",
|
||||
"INR", "ISK", "JPY", "KES", "KHR", "KRW", "KWD", "KYD", "KZT", "LBP",
|
||||
"LKR", "LTL", "LVL", "LYD", "MAD", "MUR", "MXN", "MYR", "NGN", "NOK",
|
||||
"NZD", "OMR", "PAB", "PEN", "PHP", "PKR", "PLN", "QAR", "RON", "RSD",
|
||||
"RUB", "SAR", "SEK", "SGD", "THB", "TND", "TRY", "TWD", "TZS", "UAH",
|
||||
"USD", "UYU", "VEF", "VND", "ZAR"]
|
||||
|
||||
def rate_retrieve(self, dom, ns, curr):
|
||||
"""Parse a dom node to retrieve currencies data"""
|
||||
res = {}
|
||||
|
||||
@@ -1,26 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# Abstract class to fetch rates from European Central Bank
|
||||
#
|
||||
# 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 .currency_getter_interface import Currency_getter_interface
|
||||
# © 2009 Camptocamp
|
||||
# © 2009 Grzegorz Grzelak
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from .currency_getter_interface import CurrencyGetterInterface
|
||||
|
||||
from datetime import datetime
|
||||
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
@@ -29,10 +12,17 @@ import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ECB_getter(Currency_getter_interface):
|
||||
class ECBGetter(CurrencyGetterInterface):
|
||||
"""Implementation of Currency_getter_factory interface
|
||||
for ECB service
|
||||
"""
|
||||
code = 'ECB'
|
||||
name = 'European Central Bank'
|
||||
supported_currency_array = [
|
||||
"AUD", "BGN", "BRL", "CAD", "CHF", "CNY", "CZK", "DKK", "EUR", "GBP",
|
||||
"HKD", "HRK", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "LTL", "MXN",
|
||||
"MYR", "NOK", "NZD", "PHP", "PLN", "RON", "RUB", "SEK", "SGD", "THB",
|
||||
"TRY", "USD", "ZAR"]
|
||||
|
||||
def rate_retrieve(self, dom, ns, curr):
|
||||
"""Parse a dom node to retrieve-
|
||||
|
||||
@@ -1,37 +1,29 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# Abstract class to fetch rates from Banco de México
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
# © 2009 Camptocamp
|
||||
# © 2013-2014 Agustin Cruz openpyme.mx
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from .currency_getter_interface import Currency_getter_interface
|
||||
from .currency_getter_interface import CurrencyGetterInterface
|
||||
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class MX_BdM_getter(Currency_getter_interface):
|
||||
class MX_BdMGetter(CurrencyGetterInterface):
|
||||
"""Implementation of Currency_getter_factory interface
|
||||
for Banco de México service
|
||||
|
||||
"""
|
||||
code = 'MX_BdM'
|
||||
name = 'Bank of Mexico'
|
||||
supported_currency_array = [
|
||||
"ARS", "AUD", "BBD", "BMD", "BOB", "BRL", "BSD", "BZD", "CAD", "CHF",
|
||||
"CLP", "CNH", "CNY", "COP", "CRC", "CUP", "CZK", "DKK", "DOP", "DZD",
|
||||
"EGP", "ESD", "EUR", "FJD", "GBP", "GTQ", "GYD", "HKD", "HNL", "HUF",
|
||||
"IDR", "ILS", "INR", "IQD", "JMD", "JPY", "KES", "KRW", "KWD", "MAD",
|
||||
"MYR", "NGN", "NIC", "NOK", "NZD", "PAB", "PEN", "PHP", "PLN", "PYG",
|
||||
"RON", "RUB", "SAR", "SEK", "SGD", "SVC", "THB", "TRY", "TTD", "TWD",
|
||||
"UAH", "USD", "USD", "UYP", "VEF", "VND", "ZAR"]
|
||||
|
||||
def rate_retrieve(self):
|
||||
""" Get currency exchange from Banxico.xml and proccess it
|
||||
|
||||
@@ -1,26 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# Abstract class to fetch rates from National Bank of Poland
|
||||
#
|
||||
# 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 .currency_getter_interface import Currency_getter_interface
|
||||
# © 2009 Camptocamp
|
||||
# © 2009 Grzegorz Grzelak
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from .currency_getter_interface import CurrencyGetterInterface
|
||||
|
||||
from datetime import datetime
|
||||
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
@@ -29,11 +12,19 @@ import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class PL_NBP_getter(Currency_getter_interface):
|
||||
class PL_NBPGetter(CurrencyGetterInterface):
|
||||
"""Implementation of Currency_getter_factory interface
|
||||
for PL NBP service
|
||||
|
||||
"""
|
||||
code = 'PL_NBP'
|
||||
name = 'National Bank of Poland'
|
||||
|
||||
supported_currency_array = [
|
||||
"AUD", "BGN", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR",
|
||||
"GBP", "HKD", "HRK", "HUF", "IDR", "ILS", "INR", "ISK", "JPY", "KRW",
|
||||
"LTL", "MXN", "MYR", "NOK", "NZD", "PHP", "PLN", "RON", "RUB", "SEK",
|
||||
"SGD", "THB", "TRY", "UAH", "USD", "XDR", "ZAR"]
|
||||
|
||||
def rate_retrieve(self, dom, ns, curr):
|
||||
""" Parse a dom node to retrieve
|
||||
|
||||
@@ -1,26 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# Abstract class to fetch rates from National Bank of Romania
|
||||
#
|
||||
# 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 .currency_getter_interface import Currency_getter_interface
|
||||
# © 2009 Camptocamp
|
||||
# © 2014 Dorin Hongu
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from .currency_getter_interface import CurrencyGetterInterface
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
@@ -28,9 +11,17 @@ import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class RO_BNR_getter(Currency_getter_interface):
|
||||
class RO_BNRGetter(CurrencyGetterInterface):
|
||||
"""Implementation of Currency_getter_factory interface for BNR service"""
|
||||
|
||||
code = 'RO_BNR'
|
||||
name = 'National Bank of Romania'
|
||||
supported_currency_array = [
|
||||
"AED", "AUD", "BGN", "BRL", "CAD", "CHF", "CNY", "CZK", "DKK", "EGP",
|
||||
"EUR", "GBP", "HUF", "INR", "JPY", "KRW", "MDL", "MXN", "NOK", "NZD",
|
||||
"PLN", "RON", "RSD", "RUB", "SEK", "TRY", "UAH", "USD", "XAU", "XDR",
|
||||
"ZAR"]
|
||||
|
||||
def rate_retrieve(self, dom, ns, curr):
|
||||
""" Parse a dom node to retrieve-
|
||||
currencies data"""
|
||||
|
||||
@@ -1,33 +1,35 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 CamptoCamp. All rights reserved.
|
||||
# @author Nicolas Bessi
|
||||
#
|
||||
# Abstract class to fetch rates from Yahoo Financial
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
# © 2009 Camptocamp
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from .currency_getter_interface import Currency_getter_interface
|
||||
from .currency_getter_interface import CurrencyGetterInterface
|
||||
|
||||
|
||||
class YAHOO_getter(Currency_getter_interface):
|
||||
class YAHOOGetter(CurrencyGetterInterface):
|
||||
"""Implementation of Currency_getter_factory interface
|
||||
for Yahoo finance service
|
||||
"""
|
||||
code = 'YAHOO'
|
||||
name = 'Yahoo Finance'
|
||||
|
||||
supported_currency_array = [
|
||||
"AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN",
|
||||
"BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL",
|
||||
"BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLF", "CLP",
|
||||
"CNH", "CNY", "COP", "CRC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP",
|
||||
"DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHS",
|
||||
"GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF",
|
||||
"IDR", "IEP", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY",
|
||||
"KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK",
|
||||
"LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA",
|
||||
"MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MXV",
|
||||
"MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB",
|
||||
"PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB",
|
||||
"RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS",
|
||||
"SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP",
|
||||
"TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF",
|
||||
"VND", "VUV", "WST", "XAF", "XAG", "XAU", "XCD", "XCP", "XDR", "XOF",
|
||||
"XPD", "XPF", "XPT", "YER", "ZAR", "ZMW", "ZWL"]
|
||||
|
||||
def get_updated_currency(self, currency_array, main_currency,
|
||||
max_delta_days):
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
<page string="Currency update configuration">
|
||||
<group>
|
||||
<field name="auto_currency_up"/>
|
||||
<field name="multi_company_currency_enable"/>
|
||||
</group>
|
||||
<separator string="Currency update services" colspan="4"/>
|
||||
<field name="services_to_use" colspan="4" nolabel="1"/>
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
invisible="not context.get('currency_rate_update_main_view')"
|
||||
required="context.get('currency_rate_update_main_view')"/>
|
||||
<field name="max_delta_days"/>
|
||||
<button name="refresh_currency" type="object"
|
||||
string="Update now!"/>
|
||||
</group>
|
||||
<group name="right">
|
||||
<field name="interval_type"/>
|
||||
@@ -55,7 +57,7 @@
|
||||
</record>
|
||||
|
||||
<menuitem id="currency_rate_update_menu" action="currency_rate_update_action"
|
||||
parent="account.menu_configuration_misc" sequence="21"/>
|
||||
parent="account.menu_finance_configuration" sequence="21"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
Reference in New Issue
Block a user