Add option to require company name

This commit is contained in:
Raphael Michel
2018-08-10 16:05:20 +02:00
parent 13f3b54393
commit 3d5cc98df5
5 changed files with 36 additions and 5 deletions

View File

@@ -199,6 +199,16 @@ class BaseInvoiceAddressForm(forms.ModelForm):
if event.settings.invoice_name_required:
self.fields['name'].required = True
elif event.settings.invoice_address_company_required:
self.initial['is_business'] = True
self.fields['is_business'].widget = BusinessBooleanRadio(require_business=True)
self.fields['company'].required = True
self.fields['company'].widget.is_required = True
self.fields['company'].widget.attrs['required'] = 'required'
del self.fields['company'].widget.attrs['data-display-dependency']
if 'vat_id' in self.fields:
del self.fields['vat_id'].widget.attrs['data-display-dependency']
else:
self.fields['company'].widget.attrs['data-required-if'] = '#id_is_business_1'
self.fields['name'].widget.attrs['data-required-if'] = '#id_is_business_0'

View File

@@ -110,14 +110,22 @@ class SplitDateTimePickerWidget(forms.SplitDateTimeWidget):
class BusinessBooleanRadio(forms.RadioSelect):
def __init__(self, attrs=None):
choices = (
('individual', _('Individual customer')),
('business', _('Business customer')),
)
def __init__(self, require_business=False, attrs=None):
self.require_business = require_business
if self.require_business:
choices = (
('business', _('Business customer')),
)
else:
choices = (
('individual', _('Individual customer')),
('business', _('Business customer')),
)
super().__init__(attrs, choices)
def format_value(self, value):
if self.require_business:
return 'business'
try:
return {True: 'business', False: 'individual'}[value]
except KeyError:
@@ -125,6 +133,8 @@ class BusinessBooleanRadio(forms.RadioSelect):
def value_from_datadict(self, data, files, name):
value = data.get(name)
if self.require_business:
return True
return {
'business': True,
True: True,

View File

@@ -57,6 +57,10 @@ DEFAULTS = {
'default': 'False',
'type': bool,
},
'invoice_address_company_required': {
'default': 'False',
'type': bool,
},
'invoice_address_vatid': {
'default': 'False',
'type': bool,

View File

@@ -518,6 +518,12 @@ class InvoiceSettingsForm(SettingsForm):
required=False,
widget=forms.CheckboxInput(attrs={'data-checkbox-dependency': '#id_invoice_address_asked'}),
)
invoice_address_company_required = forms.BooleanField(
label=_("Require a business addresses"),
help_text=_('This will require users to enter a company name.'),
required=False,
widget=forms.CheckboxInput(attrs={'data-checkbox-dependency': '#id_invoice_address_required'}),
)
invoice_name_required = forms.BooleanField(
label=_("Require customer name"),
required=False,

View File

@@ -12,6 +12,7 @@
{% bootstrap_field form.invoice_name_required layout="control" %}
{% bootstrap_field form.invoice_generate layout="control" %}
{% bootstrap_field form.invoice_email_attachment layout="control" %}
{% bootstrap_field form.invoice_address_company_required layout="control" %}
{% bootstrap_field form.invoice_address_vatid layout="control" %}
{% bootstrap_field form.invoice_numbers_consecutive layout="control" %}
{% bootstrap_field form.invoice_numbers_prefix layout="control" %}