diff --git a/src/servala/core/models/organization.py b/src/servala/core/models/organization.py index 4b9b435..2a90464 100644 --- a/src/servala/core/models/organization.py +++ b/src/servala/core/models/organization.py @@ -154,6 +154,8 @@ class BillingEntity(ServalaModelMixin, models.Model): "name": odoo_data.get("company_name", name), "company_type": "company", } + if vat := odoo_data.get("invoice_vat"): + company_payload["vat"] = vat company_id = CLIENT.execute("res.partner", "create", [company_payload]) instance.odoo_company_id = company_id @@ -197,7 +199,7 @@ class BillingEntity(ServalaModelMixin, models.Model): "invoice_address": None, } - company_fields = ["name", "company_type"] + company_fields = ["name", "company_type", "vat"] invoice_address_fields = [ "name", "company_type", diff --git a/src/servala/frontend/forms/organization.py b/src/servala/frontend/forms/organization.py index 37a2a35..b08c2f7 100644 --- a/src/servala/frontend/forms/organization.py +++ b/src/servala/frontend/forms/organization.py @@ -40,6 +40,7 @@ class OrganizationCreateForm(OrganizationForm): ) invoice_email = forms.EmailField(label=_("Billing Email"), required=False) invoice_phone = forms.CharField(label=_("Phone"), required=False, max_length=30) + invoice_vat = forms.CharField(label=_("VAT ID"), required=False, max_length=50) class Meta(OrganizationForm.Meta): pass diff --git a/src/servala/frontend/forms/renderers.py b/src/servala/frontend/forms/renderers.py index eb50961..b6a9995 100644 --- a/src/servala/frontend/forms/renderers.py +++ b/src/servala/frontend/forms/renderers.py @@ -20,8 +20,6 @@ class VerticalFormRenderer(TemplatesSetting): def get_class_names(self, field): input_type = self.get_field_input_type(field) errors = "is-invalid " if field.errors else "" - if input_type == "radio": - return f"{errors}form-check-input" if input_type == "checkbox": return f"{errors}form-check-input" return f"{errors}form-control" diff --git a/src/servala/frontend/templates/django/forms/widgets/input_option.html b/src/servala/frontend/templates/django/forms/widgets/input_option.html deleted file mode 100644 index 9a7654d..0000000 --- a/src/servala/frontend/templates/django/forms/widgets/input_option.html +++ /dev/null @@ -1,6 +0,0 @@ -{% include "django/forms/widgets/input.html" %} -{% if widget.wrap_label %} - -{% endif %} diff --git a/src/servala/frontend/templates/django/forms/widgets/radio.html b/src/servala/frontend/templates/django/forms/widgets/radio.html deleted file mode 100644 index 1f363b9..0000000 --- a/src/servala/frontend/templates/django/forms/widgets/radio.html +++ /dev/null @@ -1,15 +0,0 @@ -{# Change compared to Django: only render widget.attrs.class in actual option widget, not in wrapper #} -{% with id=widget.attrs.id %} -
- {% for group, options, index in widget.optgroups %} - {% if group %} -
- - {% endif %} - {% for option in options %} -
{% include option.template_name with widget=option %}
- {% endfor %} - {% if group %}
{% endif %} - {% endfor %} -
-{% endwith %} diff --git a/src/servala/frontend/templates/frontend/organizations/create.html b/src/servala/frontend/templates/frontend/organizations/create.html index 967e7ec..4fcdc7e 100644 --- a/src/servala/frontend/templates/frontend/organizations/create.html +++ b/src/servala/frontend/templates/frontend/organizations/create.html @@ -19,7 +19,7 @@ - {% if form.billing_processing_choice %} + {% if form.existing_odoo_address_id and form.existing_odoo_address_id.choices %}
@@ -42,6 +42,8 @@
+ {{ form.invoice_vat.as_field_group }} +
{{ form.invoice_street.as_field_group }} {{ form.invoice_street2.as_field_group }}
{{ form.invoice_zip.as_field_group }}
diff --git a/src/servala/frontend/templates/frontend/organizations/update.html b/src/servala/frontend/templates/frontend/organizations/update.html index 97d266d..384d5a5 100644 --- a/src/servala/frontend/templates/frontend/organizations/update.html +++ b/src/servala/frontend/templates/frontend/organizations/update.html @@ -116,6 +116,12 @@ {{ odoo_data.invoice_address.country_id.1|default:"" }} + + + {% translate "VAT ID" %} + + {{ odoo_data.company.vat|default:"" }} + {% translate "Invoice Email" %} diff --git a/src/servala/settings.py b/src/servala/settings.py index 420ba47..654b039 100644 --- a/src/servala/settings.py +++ b/src/servala/settings.py @@ -142,11 +142,11 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", - # The frontend app is loaded early in order to supersede some allauth views/behaviour - "servala.frontend", "django.forms", "template_partials", "rules.apps.AutodiscoverRulesConfig", + # The frontend app is loaded early in order to supersede some allauth views/behaviour + "servala.frontend", "allauth", "allauth.account", "allauth.socialaccount", diff --git a/src/servala/static/css/servala.css b/src/servala/static/css/servala.css index b7a5b8b..1e418fb 100644 --- a/src/servala/static/css/servala.css +++ b/src/servala/static/css/servala.css @@ -54,12 +54,6 @@ html[data-bs-theme="dark"] .btn-outline-primary, .btn-outline-primary { margin-bottom: 0; } -fieldset .form-check-input + label { - font-weight: normal; - min-height: 1.5rem; - margin: .125rem; -} - .search-form .form-body>.row { display: flex; &>.col-12 {