[MERGE] forward port branch 11.0 up to 593f631e5e

This commit is contained in:
Christophe Simonis
2019-08-02 12:41:55 +02:00
15 changed files with 121 additions and 14 deletions
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
from odoo import api, fields, models, tools
class TimesheetAttendance(models.Model):
@@ -16,6 +16,7 @@ class TimesheetAttendance(models.Model):
@api.model_cr
def init(self):
tools.drop_view_if_exists(self.env.cr, self._table)
self._cr.execute("""CREATE OR REPLACE VIEW %s AS (
SELECT
max(id) AS id,
@@ -22,6 +22,17 @@ class AccountInvoice(models.Model):
help='Intrastat country, delivery for sales, origin for purchases',
domain=[('intrastat', '=', True)])
@api.model
def _prepare_refund(self, invoice, date_invoice=None, date=None, description=None, journal_id=None):
"""
Correctly set intrastat_country_id
@override
"""
values = super(AccountInvoice, self)._prepare_refund(invoice, date_invoice, date, description, journal_id)
if 'intrastat_country_id' not in values:
values['intrastat_country_id'] = invoice.intrastat_country_id.id
return values
class IntrastatRegion(models.Model):
_name = 'l10n_be_intrastat.region'
@@ -2219,9 +2219,9 @@
</record>
<record id="account_common_526" model="account.account.template">
<field name="code">526</field>
<field name="reconcile" eval="False"/>
<field name="reconcile" eval="True"/>
<field name="name">Dividendo activo a pagar</field>
<field name="user_type_id" ref="account.data_account_type_current_liabilities"/>
<field name="user_type_id" ref="account.data_account_type_payable"/>
<field name="chart_template_id" ref="account_chart_template_common"/>
<field name="group_id" ref="l10n_es.account_group_526" />
</record>
+16 -1
View File
@@ -225,6 +225,7 @@
<field name="amount_type">group</field>
<field name="amount" eval="100"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva21_sp_in_1'), ref('account_tax_template_p_iva21_sp_in_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_10_11'), ref('mod_303_14_15_purchase'), ref('mod_303_36_37'), ref('mod_303_40_41')])]"/>
<field name="tax_group_id" ref="tax_group_iva_21"/>
</record>
<record id="account_tax_template_p_iva21_ic_bc_1" model="account.tax.template">
@@ -257,7 +258,8 @@
<field name="description">P_IVA21_IC_BC</field>
<field name="amount_type">group</field>
<field name="amount" eval="100"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva21_ic_bc_1'), ref('account_tax_template_p_iva21_ic_bc_2')])]"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva21_ic_bc_1'), ref('account_tax_template_p_iva21_ic_bc_2'), ])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_36_37'), ref('mod_303_40_41'), ref('mod_303_10_11'), ref('mod_303_14_15_purchase')])]"/>
<field name="chart_template_id" ref="l10n_es.account_chart_template_common"/>
<field name="type_tax_use">purchase</field>
<field name="name">IVA 21% Adquisición Intracomunitaria. Bienes corrientes</field>
@@ -296,6 +298,7 @@
<field name="amount_type">group</field>
<field name="amount" eval="100"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva21_ic_bi_1'), ref('account_tax_template_p_iva21_ic_bi_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_38_39'), ref('mod_303_40_41'), ref('mod_303_10_11'), ref('mod_303_14_15_purchase')])]"/>
<field name="chart_template_id" ref="l10n_es.account_chart_template_common"/>
<field name="tax_group_id" ref="tax_group_iva_21"/>
</record>
@@ -368,6 +371,7 @@
<field name="amount_type">group</field>
<field name="type_tax_use">purchase</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva4_sp_ex_1'), ref('account_tax_template_p_iva4_sp_ex_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_12_13'), ref('mod_303_14_15_purchase'), ref('mod_303_28_29'), ref('mod_303_40_41')])]"/>
<field name="name">IVA 4% Adquisición de servicios extracomunitarios</field>
<field name="tax_group_id" ref="tax_group_iva_4"/>
</record>
@@ -403,6 +407,7 @@
<field name="chart_template_id" ref="l10n_es.account_chart_template_common"/>
<field name="amount_type">group</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva10_sp_ex_1'), ref('account_tax_template_p_iva10_sp_ex_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_12_13'), ref('mod_303_14_15_purchase'), ref('mod_303_28_29'), ref('mod_303_40_41')])]"/>
<field name="type_tax_use">purchase</field>
<field name="name">IVA 10% Adquisición de servicios extracomunitarios</field>
<field name="tax_group_id" ref="tax_group_iva_10"/>
@@ -441,6 +446,7 @@
<field name="chart_template_id" ref="l10n_es.account_chart_template_common"/>
<field name="amount_type">group</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva21_sp_ex_1'), ref('account_tax_template_p_iva21_sp_ex_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_12_13'), ref('mod_303_14_15_purchase'), ref('mod_303_28_29'), ref('mod_303_40_41')])]"/>
<field name="tax_group_id" ref="tax_group_iva_21"/>
</record>
<record id="account_tax_template_p_iva4_ic_bc_1" model="account.tax.template">
@@ -477,6 +483,7 @@
<field name="type_tax_use">purchase</field>
<field name="name">IVA 4% Adquisición Intracomunitario. Bienes corrientes</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva4_ic_bc_1'), ref('account_tax_template_p_iva4_ic_bc_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_36_37'), ref('mod_303_40_41'), ref('mod_303_10_11'), ref('mod_303_14_15_purchase')])]"/>
<field name="tax_group_id" ref="tax_group_iva_4"/>
</record>
<record id="account_tax_template_p_iva4_ic_bi_1" model="account.tax.template">
@@ -514,6 +521,7 @@
<field name="type_tax_use">purchase</field>
<field name="name">IVA 4% Adquisición Intracomunitario. Bienes de inversión</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva4_ic_bi_1'), ref('account_tax_template_p_iva4_ic_bi_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_38_39'), ref('mod_303_40_41'), ref('mod_303_10_11'), ref('mod_303_14_15_purchase')])]"/>
<field name="tax_group_id" ref="tax_group_iva_4"/>
</record>
<record id="account_tax_template_p_iva10_ic_bc_1" model="account.tax.template">
@@ -550,6 +558,7 @@
<field name="type_tax_use">purchase</field>
<field name="name">IVA 10% Adquisición Intracomunitario. Bienes corrientes</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva10_ic_bc_1'), ref('account_tax_template_p_iva10_ic_bc_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_36_37'), ref('mod_303_40_41'), ref('mod_303_10_11'), ref('mod_303_14_15_purchase')])]"/>
<field name="tax_group_id" ref="tax_group_iva_10"/>
</record>
<record id="account_tax_template_p_iva10_ic_bi_1" model="account.tax.template">
@@ -586,6 +595,7 @@
<field name="type_tax_use">purchase</field>
<field name="name">IVA 10% Adquisición Intracomunitario. Bienes de inversión</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva10_ic_bi_1'), ref('account_tax_template_p_iva10_ic_bi_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_38_39'), ref('mod_303_40_41'), ref('mod_303_10_11'), ref('mod_303_14_15_purchase')])]"/>
<field name="tax_group_id" ref="tax_group_iva_10"/>
</record>
<record id="account_tax_template_s_iva0_sp_i" model="account.tax.template">
@@ -1248,6 +1258,7 @@
<field name="type_tax_use">purchase</field>
<field name="name">IVA 10% Adquisición de servicios intracomunitarios</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva10_sp_in_1'), ref('account_tax_template_p_iva10_sp_in_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_10_11'), ref('mod_303_14_15_purchase'), ref('mod_303_36_37'), ref('mod_303_40_41')])]"/>
<field name="tax_group_id" ref="tax_group_iva_10"/>
</record>
<record id="account_tax_template_p_iva4_sp_in_1" model="account.tax.template">
@@ -1284,6 +1295,7 @@
<field name="type_tax_use">purchase</field>
<field name="name">IVA 4% Adquisición de servicios intracomunitarios</field>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva4_sp_in_1'), ref('account_tax_template_p_iva4_sp_in_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_10_11'), ref('mod_303_14_15_purchase'), ref('mod_303_36_37'), ref('mod_303_40_41')])]"/>
<field name="tax_group_id" ref="tax_group_iva_4"/>
</record>
<record id="account_tax_template_p_irpf21te" model="account.tax.template">
@@ -1390,6 +1402,7 @@
<field name="amount_type">group</field>
<field name="amount" eval="100"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva4_isp_1'), ref('account_tax_template_p_iva4_isp_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_28_29'), ref('mod_303_40_41'), ref('mod_303_12_13'), ref('mod_303_14_15_purchase')])]"/>
<field name="chart_template_id" ref="l10n_es.account_chart_template_common"/>
<field name="tax_group_id" ref="tax_group_iva_4"/>
</record>
@@ -1426,6 +1439,7 @@
<field name="amount_type">group</field>
<field name="amount" eval="100"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva10_isp_1'), ref('account_tax_template_p_iva10_isp_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_28_29'), ref('mod_303_40_41'), ref('mod_303_12_13'), ref('mod_303_14_15_purchase')])]"/>
<field name="chart_template_id" ref="l10n_es.account_chart_template_common"/>
<field name="tax_group_id" ref="tax_group_iva_10"/>
</record>
@@ -1462,6 +1476,7 @@
<field name="amount_type">group</field>
<field name="amount" eval="100"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('account_tax_template_p_iva21_isp_1'), ref('account_tax_template_p_iva21_isp_2')])]"/>
<field name="tag_ids" eval="[(6, False, [ref('mod_303_28_29'), ref('mod_303_40_41'), ref('mod_303_12_13'), ref('mod_303_14_15_purchase')])]"/>
<field name="chart_template_id" ref="l10n_es.account_chart_template_common"/>
<field name="tax_group_id" ref="tax_group_iva_21"/>
</record>
+3 -3
View File
@@ -64,7 +64,7 @@
</template>
<template id="message_origin_link">
<p>This <t t-esc="self._description.lower()"/> has been <span t-if="edit">modified</span><span t-if="not edit">created</span> from:
<p>This <t t-esc="self.env['ir.model']._get(self._name).name.lower()"/> has been <span t-if="edit">modified</span><span t-if="not edit">created</span> from:
<t t-foreach="origin" t-as="o">
<a href="#" t-att-data-oe-model="o._name" t-att-data-oe-id="o.id"> <t t-esc="o.display_name"/></a><span t-if="origin.ids[-1:] != o.ids">, </span>
</t>
@@ -74,11 +74,11 @@
<template id="message_user_assigned">
<p style="margin: 0px;">
<span>Dear <t t-esc="object.user_id.sudo().name"/>,</span><br />
<span style="margin-top: 8px;">You have been assigned to the <t t-esc="object._description.lower()"/> <t t-esc="object.name_get()[0][1]"/>.</span>
<span style="margin-top: 8px;">You have been assigned to the <t t-esc="object.env['ir.model']._get(object._name).name.lower()"/> <t t-esc="object.name_get()[0][1]"/>.</span>
</p>
<p style="margin-top: 24px; margin-bottom: 16px;">
<a t-att-href="'/mail/view?model=%s&amp;res_id=%s' % (object._name, object.id)" style="background-color:#875A7B; padding: 10px; text-decoration: none; color: #fff; border-radius: 5px;">
View <t t-esc="object._description.lower()"/>
View <t t-esc="object.env['ir.model']._get(object._name).name.lower()"/>
</a>
</p>
</template>
@@ -224,7 +224,7 @@ class AuthorizeAPI():
etree.SubElement(customer, "email").text = partner.email or ''
response = self._authorize_request(root)
res = dict()
if not response.find('customerProfileId'):
if response.find('customerProfileId') is None: # Warning: do not use bool(etree) as the semantics is very misleading
_logger.warning(
'Unable to create customer payment profile, data missing from transaction. Transaction_id: %s - Partner_id: %s'
% (transaction_id, partner)
+2 -1
View File
@@ -829,7 +829,8 @@ class SaleOrderLine(models.Model):
for line in self:
fpos = line.order_id.fiscal_position_id or line.order_id.partner_id.property_account_position_id
# If company_id is set, always filter taxes by the company
taxes = line.product_id.taxes_id.filtered(lambda r: not line.company_id or r.company_id == line.company_id)
line_company_id = line.company_id or line.order_id.company_id
taxes = line.product_id.taxes_id.filtered(lambda r: not line_company_id or r.company_id == line_company_id)
line.tax_id = fpos.map_tax(taxes, line.product_id, line.order_id.partner_shipping_id) if fpos else taxes
@api.model
+53
View File
@@ -196,3 +196,56 @@ class TestSaleOrder(TestCommonSaleNoChart):
sol = so.order_line.filtered(lambda l: l.product_id == serv_cost)
self.assertTrue(sol, 'Sale: cost invoicing does not add lines when confirming vendor invoice')
self.assertEquals((sol.price_unit, sol.qty_delivered, sol.product_uom_qty, sol.qty_invoiced), (160, 2, 0, 0), 'Sale: line is wrong after confirming vendor invoice')
def test_so_create_multicompany(self):
# Preparing test Data
user_demo = self.env.ref('base.user_demo')
company_1 = self.env.ref('base.main_company')
company_2 = self.env['res.company'].create({
'name': 'company 2',
'parent_id': company_1.id,
})
user_demo.write({
'groups_id': [(4, self.env.ref('sales_team.group_sale_manager').id, False)],
'company_ids': [(6, False, [company_1.id])],
'company_id': company_1.id,
})
so_partner = self.env.ref('base.res_partner_2')
so_partner.write({
'property_account_position_id': False,
})
tax_company_1 = self.env['account.tax'].create({
'name': 'T1',
'amount': 90,
'company_id': company_1.id,
})
tax_company_2 = self.env['account.tax'].create({
'name': 'T2',
'amount': 90,
'company_id': company_2.id,
})
product_shared = self.env['product.template'].create({
'name': 'shared product',
'taxes_id': [(6, False, [tax_company_1.id, tax_company_2.id])],
})
# Use case
so_1 = self.env['sale.order'].sudo(user_demo.id).create({
'partner_id': so_partner.id,
'company_id': company_1.id,
})
so_1.invalidate_cache()
# This is what is done when importing the csv lines (on sale.order):
# id,order_line/product_id
# __export__.sale_order_37_1bb960ba,Product name
so_1.write({
'order_line': [(0, False, {'product_id': product_shared.product_variant_id.id, 'order_id': so_1.id})],
})
self.assertEqual(set(so_1.order_line.tax_id.ids), set([tax_company_1.id]),
'Only taxes from the right company are put by default')
+1 -1
View File
@@ -89,7 +89,7 @@
<field name="name">stock_move multi-company</field>
<field name="model_id" search="[('model','=','stock.move')]" model="ir.model"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
<field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('location_dest_id.company_id', '=', False)]</field>
</record>
<record model="ir.rule" id="stock_quant_rule">
+2 -2
View File
@@ -196,11 +196,11 @@ def concat_xml(file_list):
:param list(str) file_list: list of files to check
:returns: (concatenation_result, checksum)
:rtype: (str, str)
:rtype: (bytes, str)
"""
checksum = hashlib.new('sha1')
if not file_list:
return '', checksum.hexdigest()
return b'', checksum.hexdigest()
root = None
for fname in file_list:
@@ -737,6 +737,7 @@ var BasicModel = AbstractModel.extend({
});
_.each(fields, function (field) {
var dataPoint;
record.data[field.name] = null;
if (field.type === 'many2one') {
if (field.value) {
var id = _.isArray(field.value) ? field.value[0] : field.value;
@@ -170,10 +170,13 @@ var WebsiteRoot = BodyManager.extend({
* @private
* @param {jQuery} [$stopTarget]
* only stop the animations linked to the given element(s)
* its descendants
*/
_stopAnimations: function ($stopTarget) {
var removedAnimations = _.map(this.animations, function (animation) {
if (!$stopTarget || $stopTarget.filter(animation.el).length) {
if (!$stopTarget
|| $stopTarget.filter(animation.el).length
|| $stopTarget.find(animation.el).length) {
animation.destroy();
return animation;
}
@@ -69,7 +69,7 @@ var ProductWishlist = Widget.extend({
$('input.js_product_change:checked').first().trigger('change');
}
else {
$('input.js_variant_change').trigger('change');
$('input.js_variant_change:checked').first().trigger('change');
}
});
+11
View File
@@ -0,0 +1,11 @@
Vietnam, 2019-07-27
I hereby agree to the terms of the Odoo Individual Contributor License
Agreement v1.0.
I declare that I am authorized and able to make this agreement and sign this
declaration.
Signed,
Anh Vu <vuna2004@gmail.com> https://github.com/anhvu-sg
+11
View File
@@ -0,0 +1,11 @@
Denmark, 2019-07-24
I hereby agree to the terms of the Odoo Individual Contributor License
Agreement v1.0.
I declare that I am authorized and able to make this agreement and sign this
declaration.
Signed,
Stefan Andersen <stfnandersen@gmail.com> https://github.com/stfnndrsn