Hide billing addresses #281
4 changed files with 136 additions and 62 deletions
|
|
@ -86,7 +86,13 @@ class BillingEntityAdmin(admin.ModelAdmin):
|
|||
|
||||
@admin.register(OrganizationOrigin)
|
||||
class OrganizationOriginAdmin(admin.ModelAdmin):
|
||||
list_display = ("name", "billing_entity", "default_odoo_sale_order_id")
|
||||
list_display = (
|
||||
"name",
|
||||
"billing_entity",
|
||||
"default_odoo_sale_order_id",
|
||||
"hide_billing_address",
|
||||
)
|
||||
list_filter = ("hide_billing_address",)
|
||||
search_fields = ("name",)
|
||||
autocomplete_fields = ("billing_entity",)
|
||||
filter_horizontal = ("limit_cloudproviders",)
|
||||
|
|
|
|||
41
src/servala/core/migrations/0014_hide_billing_address.py
Normal file
41
src/servala/core/migrations/0014_hide_billing_address.py
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# Generated by Django 5.2.8 on 2025-11-12 09:31
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("core", "0013_add_form_config"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="organizationorigin",
|
||||
name="billing_message",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
help_text="Optional message to display instead of billing address (e.g., 'You will be invoiced by Exoscale').",
|
||||
verbose_name="Billing Message",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="organizationorigin",
|
||||
name="hide_billing_address",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
help_text="If enabled, the billing address will not be shown in the organization details view.",
|
||||
verbose_name="Hide Billing Address",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="controlplane",
|
||||
name="user_info",
|
||||
field=models.JSONField(
|
||||
blank=True,
|
||||
help_text='Array of info objects: [{"title": "…", "content": "…", "help_text": "…"}]. The help_text field is optional and will be shown as a hover popover on an info icon.',
|
||||
null=True,
|
||||
verbose_name="User Information",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -419,6 +419,20 @@ class OrganizationOrigin(ServalaModelMixin, models.Model):
|
|||
"If set, this sale order will be used for new organizations with this origin."
|
||||
),
|
||||
)
|
||||
hide_billing_address = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("Hide Billing Address"),
|
||||
help_text=_(
|
||||
"If enabled, the billing address will not be shown in the organization details view."
|
||||
),
|
||||
)
|
||||
billing_message = models.TextField(
|
||||
blank=True,
|
||||
verbose_name=_("Billing Message"),
|
||||
help_text=_(
|
||||
"Optional message to display instead of billing address (e.g., 'You will be invoiced by Exoscale')."
|
||||
),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Organization origin")
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if not form.instance.origin.hide_billing_address %}
|
||||
{% if form.instance.billing_entity and form.instance.billing_entity.odoo_data.invoice_address %}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
|
|
@ -226,6 +227,18 @@
|
|||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% elif form.instance.origin.billing_message %}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title">{% translate "Billing Information" %}</h4>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="card-body">
|
||||
<p>{{ form.instance.origin.billing_message }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if can_manage_members %}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue