Billing Entity Management #66

Merged
rixx merged 32 commits from 54-billing-entity-management into main 2025-06-22 15:42:14 +00:00
Showing only changes of commit 025670c0a4 - Show all commits

View file

@ -120,13 +120,30 @@ def get_invoice_addresses(user):
addresses the user owns or is connected to from the Odoo API."""
# Were building our conditions in order:
# - in exceptions, users may be using a billing accounts email
# - if the user is an admin or owner of a Servala organization
# - if the user is associated with an odoo user, return all billing
# addresses / organizations created by the user
# - if the user is associated with an odoo contact, return all billing
# addresses with the same parent_id
from servala.core.models.organization import (
OrganizationMembership,
OrganizationRole,
)
email = user.email
or_conditions = [("email", "ilike", email)]
servala_invoice_ids = list(
OrganizationMembership.objects.filter(
user=user, role__in=[OrganizationRole.ADMIN, OrganizationRole.OWNER]
)
.values_list("organization__billing_entity__odoo_invoice_id", flat=True)
.distinct()
)
servala_invoice_ids = [pk for pk in servala_invoice_ids if pk]
if servala_invoice_ids:
or_conditions.append(("id", "in", servala_invoice_ids))
odoo_users = CLIENT.search_read(
model="res.users",
domain=[("login", "=", email), ("active", "=", True)],