[FIX] contract: Don't execute onchange after invoice creation + Tests with duplicated name

- Don't execute onchange after invoice creation
  Using that approach (that is the current one in core)  has a lot of side effects and
  performance bottlenecks. You can read odoo/odoo#40156 for summarizing them.
  This also improves the handling of the values of payment term an fiscal position
  for using the partner ones if not set.
- Tests with duplicated name
  So they are not executed at all. Detected by chance looking for a test for the other PR.
This commit is contained in:
Pedro M. Baeza
2019-12-02 13:25:07 +01:00
committed by Christopher Rogos
parent ab32fa5f30
commit 912480c68d
71 changed files with 86 additions and 85 deletions

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -385,7 +385,7 @@ msgid "Company"
msgstr "Empresa"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Redacta Email"

View File

@@ -299,7 +299,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -392,7 +392,7 @@ msgid "Company"
msgstr "Unternehmen"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "E-Mail verfassen"

View File

@@ -321,7 +321,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -387,7 +387,7 @@ msgid "Company"
msgstr "Compañía"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Componer correo electrónico"

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -321,7 +321,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -320,7 +320,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -386,7 +386,7 @@ msgid "Company"
msgstr "Entreprise"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Rédiger courriel"

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -383,7 +383,7 @@ msgid "Company"
msgstr "Compañía"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Compoñer correo electrónico"

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -321,7 +321,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -16,8 +16,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.9.1\n"
#. module: contract
@@ -325,7 +325,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -322,7 +322,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -320,7 +320,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -389,7 +389,7 @@ msgid "Company"
msgstr "Azienda"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Comporre email"

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -320,7 +320,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -395,7 +395,7 @@ msgid "Company"
msgstr "Bedrijf"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Email opstellen"

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -320,7 +320,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -387,7 +387,7 @@ msgid "Company"
msgstr "Empresa"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Escrever E-mail"

View File

@@ -392,7 +392,7 @@ msgid "Company"
msgstr "Empresa"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "Escrever E-mail"

View File

@@ -322,7 +322,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -321,7 +321,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -320,7 +320,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -321,7 +321,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -321,7 +321,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -320,7 +320,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -387,7 +387,7 @@ msgid "Company"
msgstr "Firma"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "E-posta Oluştur"

View File

@@ -322,7 +322,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -318,7 +318,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -379,7 +379,7 @@ msgid "Company"
msgstr "公司"
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr "编写Email"

View File

@@ -319,7 +319,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:310
#: code:addons/contract/models/contract.py:317
#, python-format
msgid "Compose Email"
msgstr ""

View File

@@ -281,19 +281,26 @@ class ContractContract(models.Model):
invoice_type = 'out_invoice'
if self.contract_type == 'purchase':
invoice_type = 'in_invoice'
return {
'name': self.code,
'type': invoice_type,
vinvoice = self.env['account.invoice'].new({
'partner_id': self.invoice_partner_id.id,
'type': invoice_type,
})
vinvoice._onchange_partner_id()
invoice_vals = vinvoice._convert_to_write(vinvoice._cache)
invoice_vals.update({
'name': self.code,
'currency_id': currency.id,
'date_invoice': date_invoice,
'journal_id': journal.id,
'origin': self.name,
'company_id': self.company_id.id,
'user_id': self.user_id.id,
'payment_term_id': self.payment_term_id.id,
'fiscal_position_id': self.fiscal_position_id.id,
}
})
if self.payment_term_id:
invoice_vals['payment_term_id'] = self.payment_term_id.id
if self.fiscal_position_id:
invoice_vals['fiscal_position_id'] = self.fiscal_position_id.id
return invoice_vals
@api.multi
def action_contract_send(self):
@@ -354,12 +361,6 @@ class ContractContract(models.Model):
@api.model
def _finalize_invoice_creation(self, invoices):
for invoice in invoices:
payment_term = invoice.payment_term_id
fiscal_position = invoice.fiscal_position_id
invoice._onchange_partner_id()
invoice.payment_term_id = payment_term
invoice.fiscal_position_id = fiscal_position
invoices.compute_taxes()
@api.model

View File

@@ -631,7 +631,7 @@ class TestContract(TestContractBase):
self.acct_line.write({'date_end': False, 'is_auto_renew': False})
self.assertFalse(self.contract.date_end)
def test_stop_contract_line(self):
def test_cancel_contract_line(self):
"""It should raise a validation error"""
self.acct_line.cancel()
with self.assertRaises(ValidationError):
@@ -1808,7 +1808,7 @@ class TestContract(TestContractBase):
self.contract._compute_invoice_count()
self.assertEqual(self.contract.invoice_count, 3)
def test_contract_count_invoice(self):
def test_contract_count_invoice_2(self):
invoices = self.env['account.invoice']
invoices |= self.contract.recurring_create_invoice()
invoices |= self.contract.recurring_create_invoice()