Steps to reproduce:
- Install contacts and base_address_extended
- Install a module adding "res.city" records (e.g. l10n_co_edi)
- Go to Contacts and create a new one:
* Name: [any]
* Country: Colombia
* City (city_id): [any]
- Create a "child" contact of "Contact" type
- Save the contact
Issue:
"city_id" field of the child contact is False.
It is not possible to set the address of a contact-type contact manually.
Some address fields ('street', 'street2', 'zip', 'city', 'state_id', 'country_id')
are synchronized with the parent contact.
"city_id" is not and is not settable at all for contact-type contact.
It could be an issue for Colombian or Mexican localizations if a child contact is
used for an invoice as some data have to be retrieved from "city_id" field to generate
the electronic invoice.
Solution:
Add "city_id" in the list of address fields to sync.
opw-3747296
closes odoo/odoo#158686
X-original-commit: ec059dfd0a3f57754bd481f0a651b01c92b10dea
Signed-off-by: Habib Ayob (ayh) <ayh@odoo.com>
62 lines
2.8 KiB
Python
62 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class TestStreetFields(TransactionCase):
|
|
|
|
def test_partner_create(self):
|
|
""" Will test the compute and inverse methods of street fields when creating partner records. """
|
|
mx_id = self.env.ref('base.mx').id
|
|
partner = self.env['res.partner'].create({'name': 'Test Address', 'country_id': mx_id})
|
|
|
|
values = [
|
|
['', '', '', ''],
|
|
['Place Royale', 'Place Royale', '', ''],
|
|
['Chaussee de Namur 40a - 2b', 'Chaussee de Namur', '40a', '2b'],
|
|
['Chaussee de Namur 1', 'Chaussee de Namur', '1', ''],
|
|
['40 Chaussee de Namur', '40 Chaussee de Namur', '', ''],
|
|
['Chaussee de Namur, 40 - Apt 2b', 'Chaussee de Namur,', '40', 'Apt 2b'],
|
|
['header Chaussee de Namur, 40 trailer ', 'header Chaussee de Namur, 40 trailer', '', ''],
|
|
['\nCl 53\n # 43 - 81', 'Cl 53\n #', '43', '81'],
|
|
['Street Line 1\nNumber Line 2 44 76', 'Street Line 1\nNumber Line 2 44', '76', ''],
|
|
]
|
|
|
|
for street, name, number, number2 in values:
|
|
# test street -> street values (compute)
|
|
partner.street = street
|
|
self.assertEqual(partner.street_name, name, 'Wrongly formatted street name: expected %s, received %s' % (name, partner.street_name))
|
|
self.assertEqual(partner.street_number, number, 'Wrongly formatted street number: expected %s, received %s' % (number, partner.street_number))
|
|
self.assertEqual(partner.street_number2, number2, 'Wrongly formatted street number2: expected %s, received %s' % (number2, partner.street_number2))
|
|
|
|
for street, name, number, number2 in values:
|
|
partner.street_number2 = number2
|
|
partner.street_number = number
|
|
partner.street_name = name
|
|
self.assertEqual(partner.street, street.strip(), 'Wrongly formatted street: expected %s, received %s' % (street, partner.street))
|
|
|
|
def test_child_sync(self):
|
|
""" Test that city_id is propagated to (contact-type) children contacts. """
|
|
usa = self.env.ref('base.us')
|
|
new_york_city = self.env['res.city'].create({
|
|
'name': 'New York',
|
|
'country_id': usa.id,
|
|
})
|
|
parent = self.env['res.partner'].create({
|
|
'name': 'Parent Company',
|
|
'country_id': usa.id,
|
|
'city_id': new_york_city.id,
|
|
})
|
|
child = self.env['res.partner'].create({
|
|
'name': 'Child Contact',
|
|
'type': 'contact',
|
|
'parent_id': parent.id,
|
|
})
|
|
self.assertRecordValues(child, [{
|
|
'name': 'Child Contact',
|
|
'country_id': usa.id,
|
|
'city_id': new_york_city.id,
|
|
}])
|