New implementation of KM cost to property support the decimal precision at 3 digits (without changing the decimal precision of all prices in Odoo)
This commit is contained in:
@@ -1,89 +1,42 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# © 2016-2017 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
||||
# © 2017 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, SUPERUSER_ID
|
||||
|
||||
PRODUCTS = {
|
||||
KM_PRICES = {
|
||||
'FR': [
|
||||
{'default_code': '1-3CV_0-5000km',
|
||||
'name': u"Frais kilométriques: 1-3 CV, < 5 000 km",
|
||||
'cost': 0.41},
|
||||
{'default_code': '4CV_0-5000km',
|
||||
'name': u"Frais kilométriques: 4 CV, < 5 000 km",
|
||||
'cost': 0.493},
|
||||
{'default_code': '5CV_0-5000km',
|
||||
'name': u"Frais kilométriques: 5 CV, < 5 000 km",
|
||||
'cost': 0.543},
|
||||
{'default_code': '6CV_0-5000km',
|
||||
'name': u"Frais kilométriques: 6 CV, < 5 000 km",
|
||||
'cost': 0.568},
|
||||
{'default_code': '7+CV_0-5000km',
|
||||
'name': u"Frais kilométriques: 7+ CV, < 5 000 km",
|
||||
'cost': 0.595},
|
||||
{'default_code': '1-3CV_5-20000km',
|
||||
'name': u"Frais kilométriques: 1-3 CV, 5-20 000 km",
|
||||
'cost': 0.245},
|
||||
{'default_code': '4CV_5-20000km',
|
||||
'name': u"Frais kilométriques: 4 CV, 5-20 000 km",
|
||||
'cost': 0.277},
|
||||
{'default_code': '5CV_5-20000km',
|
||||
'name': u"Frais kilométriques: 5 CV, 5-20 000 km",
|
||||
'cost': 0.305},
|
||||
{'default_code': '6CV_5-20000km',
|
||||
'name': u"Frais kilométriques: 6 CV, 5-20 000 km",
|
||||
'cost': 0.32},
|
||||
{'default_code': '7+CV_5-20000km',
|
||||
'name': u"Frais kilométriques: 7+ CV, 5-20 000 km",
|
||||
'cost': 0.337},
|
||||
{'default_code': '1-3CV_+20000km',
|
||||
'name': u"Frais kilométriques: 1-3 CV, > 20 000 km",
|
||||
'cost': 0.245},
|
||||
{'default_code': '4CV_+20000km',
|
||||
'name': u"Frais kilométriques: 4 CV, > 20 000 km",
|
||||
'cost': 0.277},
|
||||
{'default_code': '5CV_+20000km',
|
||||
'name': u"Frais kilométriques: 5 CV, > 20 000 km",
|
||||
'cost': 0.305},
|
||||
{'default_code': '6CV_+20000km',
|
||||
'name': u"Frais kilométriques: 6 CV, > 20 000 km",
|
||||
'cost': 0.32},
|
||||
{'default_code': '7+CV_+20000km',
|
||||
'name': u"Frais kilométriques: 7+ CV, > 20 000 km",
|
||||
'cost': 0.337},
|
||||
{'name': u"[FR] 1-3 CV, < 5 000 km", 'unit_amount': 0.41},
|
||||
{'name': u"[FR] 4 CV, < 5 000 km", 'unit_amount': 0.493},
|
||||
{'name': u"[FR] 5 CV, < 5 000 km", 'unit_amount': 0.543},
|
||||
{'name': u"[FR] 6 CV, < 5 000 km", 'unit_amount': 0.568},
|
||||
{'name': u"[FR] 7+ CV, < 5 000 km", 'unit_amount': 0.595},
|
||||
{'name': u"[FR] 1-3 CV, 5-20 000 km", 'unit_amount': 0.245},
|
||||
{'name': u"[FR] 4 CV, 5-20 000 km", 'unit_amount': 0.277},
|
||||
{'name': u"[FR] 5 CV, 5-20 000 km", 'unit_amount': 0.305},
|
||||
{'name': u"[FR] 6 CV, 5-20 000 km", 'unit_amount': 0.32},
|
||||
{'name': u"[FR] 7+ CV, 5-20 000 km", 'unit_amount': 0.337},
|
||||
{'name': u"[FR] 1-3 CV, > 20 000 km", 'unit_amount': 0.245},
|
||||
{'name': u"[FR] 4 CV, > 20 000 km", 'unit_amount': 0.277},
|
||||
{'name': u"[FR] 5 CV, > 20 000 km", 'unit_amount': 0.305},
|
||||
{'name': u"[FR] 6 CV, > 20 000 km", 'unit_amount': 0.32},
|
||||
{'name': u"[FR] 7+ CV, > 20 000 km", 'unit_amount': 0.337},
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
def create_private_car_expense_products(cr, registry):
|
||||
def create_private_car_km_prices(cr, registry):
|
||||
with api.Environment.manage():
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
companies = env['res.company'].search([])
|
||||
country_codes = []
|
||||
for company in companies:
|
||||
company_country_code = company.country_id.code and\
|
||||
company.country_id.code.upper() or False
|
||||
if company_country_code not in country_codes:
|
||||
country_codes.append(company_country_code)
|
||||
categ_id = env.ref('hr_expense.cat_expense').id
|
||||
km_uom_id = env.ref('product.product_uom_km').id
|
||||
for country_code in country_codes:
|
||||
if country_code in PRODUCTS:
|
||||
for product in PRODUCTS[country_code]:
|
||||
env['product.product'].create({
|
||||
'name': product['name'],
|
||||
'default_code': product.get('default_code'),
|
||||
'categ_id': categ_id,
|
||||
'sale_ok': False,
|
||||
'purchase_ok': False,
|
||||
'can_be_expensed': False,
|
||||
'private_car_expense_ok': True,
|
||||
'type': 'service',
|
||||
'list_price': False,
|
||||
'standard_price': product['cost'],
|
||||
'uom_id': km_uom_id,
|
||||
'uom_po_id': km_uom_id,
|
||||
'taxes_id': False,
|
||||
'supplier_taxes_id': False,
|
||||
if company_country_code in KM_PRICES:
|
||||
for record in KM_PRICES[company_country_code]:
|
||||
env['private.car.km.price'].create({
|
||||
'name': record['name'],
|
||||
'unit_amount': record['unit_amount'],
|
||||
'company_id': company.id,
|
||||
})
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user