Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ addon | version | maintainers | summary
[partner_address_street3](partner_address_street3/) | 19.0.1.0.0 | | Add a third address line on partners
[partner_affiliate](partner_affiliate/) | 19.0.1.0.0 | | Partner Affiliates
[partner_auto_archive](partner_auto_archive/) | 19.0.1.0.0 | | Archive periodically all contacts marked as auto-archive.
[partner_category_description](partner_category_description/) | 19.0.1.0.1 | <a href='https://github.com/edlopen'><img src='https://github.com/edlopen.png' width='32' height='32' style='border-radius:50%;' alt='edlopen'/></a> <a href='https://github.com/rafaelbn'><img src='https://github.com/rafaelbn.png' width='32' height='32' style='border-radius:50%;' alt='rafaelbn'/></a> | Adds a description field to contact categories to improve organization and managment of customer relationships.
[partner_company_default](partner_company_default/) | 19.0.1.0.0 | | Partner Company Default
[partner_company_group](partner_company_group/) | 19.0.1.0.0 | <a href='https://github.com/luisg123v'><img src='https://github.com/luisg123v.png' width='32' height='32' style='border-radius:50%;' alt='luisg123v'/></a> | Adds the possibility to add a company group to a company
[partner_company_type](partner_company_type/) | 19.0.1.0.0 | | Adds a company type to partner that are companies
Expand Down
12 changes: 12 additions & 0 deletions partner_address_street3/models/res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,18 @@ def _address_fields(self):
res.append("street3")
return res

@api.model
def default_get(self, default_fields):
values = super().default_get(default_fields)
parent_id = self.env.context.get("default_parent_id") or values.get("parent_id")
if parent_id:
parent = self.browse(parent_id)
for field in self._address_fields():
if field in default_fields and not values.get(field):
val = parent[field]
values[field] = val.id if isinstance(val, models.BaseModel) else val
return values

def _display_address(self, without_company=False):
"""Remove empty lines which can happen when street3 field is empty."""
res = super()._display_address(without_company=without_company)
Expand Down
52 changes: 52 additions & 0 deletions partner_address_street3/tests/test_street_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,55 @@ def test_uninstall(self):
uninstall_hook(self.env)
us_country = self.env.ref("base.us")
self.assertTrue("%(street3)s" not in us_country.address_format)

def test_default_get_copies_street3_from_default_parent_id(self):
"""Replicate the "Add in Contacts & Addresses" inline form context.

Odoo passes ``default_parent_id`` in the context when the inline
``child_ids`` form is opened from a company contact, so ``default_get``
must pre-fill the address fields (including ``street3``) from that
parent.
"""
parent = self.env["res.partner"].create(
{
"name": "Parent Company",
"street": "123 Main St",
"street2": "Floor 2",
"street3": "Suite 100",
"city": "Springfield",
"country_id": self.env.ref("base.us").id,
}
)
values = (
self.env["res.partner"]
.with_context(default_parent_id=parent.id, default_type="contact")
.default_get(["street", "street2", "street3", "city"])
)
self.assertEqual(values.get("street3"), "Suite 100")
self.assertEqual(values.get("street2"), "Floor 2")
self.assertEqual(values.get("street"), "123 Main St")
self.assertEqual(values.get("city"), "Springfield")

def test_default_get_does_not_overwrite_explicit_value(self):
"""An explicit default must win over the parent's value."""
parent = self.env["res.partner"].create(
{"name": "Parent", "street3": "From parent"}
)
values = (
self.env["res.partner"]
.with_context(
default_parent_id=parent.id,
default_type="contact",
default_street3="Explicit",
)
.default_get(["street3"])
)
self.assertEqual(values.get("street3"), "Explicit")

def test_default_get_no_parent(self):
values = (
self.env["res.partner"]
.with_context(default_type="contact")
.default_get(["street3"])
)
self.assertNotIn("street3", values)
2 changes: 0 additions & 2 deletions setup/_metapackage/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ dependencies = [
"odoo-addon-partner_address_street3==19.0.*",
"odoo-addon-partner_affiliate==19.0.*",
"odoo-addon-partner_auto_archive==19.0.*",
"odoo-addon-partner_category_description==19.0.*",
"odoo-addon-partner_company_default==19.0.*",
"odoo-addon-partner_company_group==19.0.*",
"odoo-addon-partner_company_type==19.0.*",
Expand Down Expand Up @@ -57,7 +56,6 @@ dependencies = [
"odoo-addon-partner_title_contacts==19.0.*",
"odoo-addon-partner_type_base==19.0.*",
"odoo-addon-partner_tz==19.0.*",
"odoo-addon-partner_uom_mapping==19.0.*",
"odoo-addon-partner_utm_source==19.0.*",
"odoo-addon-partner_vat_unique==19.0.*",
"odoo-addon-sale_partner_company_group==19.0.*",
Expand Down
Loading