{# Provides customer type, salutation, title, firstname, lastname and birthday fields for address forms (e.g. registering a user, creating or updating an address) #}
{% block component_address_personal_fields %}
{% block component_address_personal_account_type %}
{% if onlyCompanyRegistration or (config('core.loginRegistration.showAccountTypeSelection') and not hideCustomerTypeSelect) %}
<div class="{{ formRowClass }}">
<div class="form-group col-md-3 col-sm-6 contact-type">
{% block component_address_personal_account_type_label %}
<label class="form-label"
for="{{ idPrefix ~ prefix }}accountType">
{{ "account.personalTypeLabel"|trans|sw_sanitize }}{{ "general.required"|trans|sw_sanitize }}
</label>
{% endblock %}
{% block component_address_personal_account_type_select %}
{% if onlyCompanyRegistration or config('core.loginRegistration.showAccountTypeSelection') %}
<select name="{% if prefix %}{{ prefix }}[accountType]{% else %}accountType{% endif %}"
id="{{ idPrefix ~ prefix }}accountType"
{% if onlyCompanyRegistration %}disabled{% endif %}
required="required"
class="{{ formSelectClass }} contact-select"
data-form-field-toggle="true"
data-form-field-toggle-target=".js-field-toggle-contact-type-company{% if customToggleTarget %}-{{ prefix }}{% endif %}"
data-form-field-toggle-value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
data-form-field-toggle-scope="{% if scope == 'parent' %}parent{% else %}all{% endif %}"
{% if scope == 'parent' %}data-form-field-toggle-parent-selector={{ parentSelector }}{% endif %}
>
{% endif %}
{% set isCompany = false %}
{% if page.address.company or data.company is not empty %}
{% set isCompany = true %}
{% endif %}
{% if onlyCompanyRegistration or (accountType and accountType == constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS')) %}
{% set isCompany = true %}
{% endif %}
{% set isLoginPage = false %}
{% if activeRoute == 'frontend.account.login.page' %}
{% set isLoginPage = true %}
{% endif %}
{% if isLoginPage %}
<option disabled="disabled"
selected="selected"
value="">
{{ "account.personalTypeLabel"|trans|sw_sanitize }}{{ "general.required"|trans|sw_sanitize }}
</option>
{% endif %}
{% if not onlyCompanyRegistration %}
<option value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_PRIVATE') }}"
{% if isCompany == false and isLoginPage == false %} selected="selected"{% endif %}>
{{ "account.personalTypePrivate"|trans|sw_sanitize }}
</option>
{% endif %}
<option value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
{% if isCompany == true and isLoginPage == false %} selected="selected"{% endif %}>
{{ "account.personalTypeBusiness"|trans|sw_sanitize }}
</option>
</select>
{% if onlyCompanyRegistration %}<input type="hidden" name="accountType" value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}">{% endif %}
{% endblock %}
{% block component_address_personal_account_type_error %}
{% endblock %}
</div>
</div>
{% elseif not hideCustomerTypeSelect %}
<input type="hidden" name="accountType">
{% endif %}
{% endblock %}
{% block component_address_personal_fields_salutation_title %}
<div class="{{ formRowClass }}">
{% block component_address_personal_fields_salutation %}
<div class="form-group col-md-3 col-sm-6">
{% block component_address_personal_fields_salutation_label %}
<label class="form-label"
for="{{ idPrefix ~ prefix }}personalSalutation">
{{ "account.personalSalutationLabel"|trans|sw_sanitize }}{{ "general.required"|trans|sw_sanitize }}
</label>
{% endblock %}
{% block component_address_form_salutation_select %}
<select id="{{ idPrefix ~ prefix }}personalSalutation"
class="{{ formSelectClass }}{% if formViolations.getViolations('/salutationId') is not empty %} is-invalid{% endif %}"
name="{% if prefix %}{{ prefix }}[salutationId]{% else %}salutationId{% endif %}"
required="required">
{% if not data.get('salutationId') %}
<option disabled="disabled"
selected="selected"
value="">
{{ "account.personalSalutationPlaceholder"|trans|sw_sanitize }}
</option>
{% endif %}
{% for salutation in page.salutations %}
<option {% if salutation.id == data.get('salutationId') %}
selected="selected"
{% endif %}
value="{{ salutation.id }}">
{{ salutation.translated.displayName }}
</option>
{% endfor %}
</select>
{% endblock %}
{% block component_address_form_salutation_select_error %}
{% if formViolations.getViolations('/salutationId') is not empty %}
{% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' with {
violationPath: '/salutationId'
} %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
{% block component_address_personal_fields_title %}
{% if config('core.loginRegistration.showTitleField') %}
<div class="form-group col-md-3 col-sm-6">
{% block component_address_personal_fields_title_label %}
<label class="form-label"
for="{{ idPrefix ~ prefix }}personalTitle">
{{ "account.personalTitleLabel"|trans|sw_sanitize }}
</label>
{% endblock %}
{% block component_address_personal_fields_title_input %}
<input type="text"
class="form-control"
autocomplete="section-personal title"
id="{{ idPrefix ~ prefix }}personalTitle"
placeholder="{{ "account.personalTitlePlaceholder"|trans|striptags }}"
name="{% if prefix %}{{ prefix }}[title]{% else %}title{% endif %}"
value="{{ data.get('title') }}">
{% endblock %}
</div>
{% endif %}
{% endblock %}
</div>
{% endblock %}
{% block component_address_personal_fields_name %}
<div class="{{ formRowClass }}">
{% block component_address_personal_fields_first_name %}
<div class="form-group col-sm-6">
{% if formViolations.getViolations("/firstName") is not empty %}
{% set violationPath = "/firstName" %}
{% else %}
{% set requiredMessage = "error.VIOLATION::IS_BLANK_ERROR"|trans({ '%field%': "account.personalFirstNameLabel"|trans|sw_sanitize }) %}
{% endif %}
{% block component_address_personal_fields_first_name_label %}
<label class="form-label"
for="{{ idPrefix ~ prefix }}personalFirstName">
{{ "account.personalFirstNameLabel"|trans|sw_sanitize }}{{ "general.required"|trans|sw_sanitize }}
</label>
{% endblock %}
{% block component_address_personal_fields_first_name_input %}
<input type="text"
class="form-control{% if violationPath is not empty %} is-invalid{% endif %}"
autocomplete="section-personal given-name"
id="{{ idPrefix ~ prefix }}personalFirstName"
placeholder="{{ "account.personalFirstNamePlaceholder"|trans|striptags }}"
name="{% if prefix %}{{ prefix }}[firstName]{% else %}firstName{% endif %}"
value="{{ data.get('firstName') }}"
data-form-validation-required
{% if requiredMessage is defined %}data-form-validation-required-message="{{ requiredMessage }}"{% endif %}
required="required">
{% endblock %}
{% block component_address_personal_fields_first_name_input_error %}
{% if violationPath %}
{% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
{% block component_address_personal_fields_last_name %}
<div class="form-group col-sm-6">
{% if formViolations.getViolations("/lastName") is not empty %}
{% set violationPath = "/lastName" %}
{% else %}
{% set requiredMessage = "error.VIOLATION::IS_BLANK_ERROR"|trans({ '%field%': "account.personalLastNameLabel"|trans|sw_sanitize }) %}
{% endif %}
{% block component_address_personal_fields_last_name_label %}
<label class="form-label"
for="{{ idPrefix ~ prefix }}personalLastName">
{{ "account.personalLastNameLabel"|trans|sw_sanitize }}{{ "general.required"|trans|sw_sanitize }}
</label>
{% endblock %}
{% block component_address_personal_fields_last_name_input %}
<input type="text"
class="form-control{% if violationPath %} is-invalid{% endif %}"
autocomplete="section-personal family-name"
id="{{ idPrefix ~ prefix }}personalLastName"
placeholder="{{ "account.personalLastNamePlaceholder"|trans|striptags }}"
name="{% if prefix %}{{ prefix }}[lastName]{% else %}lastName{% endif %}"
value="{{ data.get('lastName') }}"
data-form-validation-required
{% if requiredMessage is defined %}data-form-validation-required-message="{{ requiredMessage }}"{% endif %}
required="required">
{% endblock %}
{% block component_address_personal_fields_last_name_input_error %}
{% if violationPath %}
{% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
</div>
{% endblock %}
{% block component_address_personal_company %}
{% if (onlyCompanyRegistration or config('core.loginRegistration.showAccountTypeSelection')) and activeRoute == 'frontend.account.profile.page' %}
<div class="js-field-toggle-contact-type-company{% if customToggleTarget %}-{{ prefix }}{% endif %}">
{% block component_address_personal_company_fields %}
<div class="{{ formRowClass }}">
{% block component_address_personal_company_name %}
<div class="form-group col-12">
{% if formViolations.getViolations("/company") is not empty %}
{% set violationPath = "/company" %}
{% else %}
{% set requiredMessage = "error.VIOLATION::IS_BLANK_ERROR"|trans({ '%field%': "address.companyNameLabel"|trans|sw_sanitize }) %}
{% endif %}
{% block component_address_personal_company_name_label %}
<label class="form-label" for="{{ idPrefix ~ prefix }}company">
{{ "address.companyNameLabel"|trans|sw_sanitize }}{{ "general.required"|trans|sw_sanitize }}
</label>
{% endblock %}
{% block component_address_personal_company_name_input %}
<input type="text"
class="form-control{% if violationPath %} is-invalid{% endif %}"
id="{{ idPrefix ~ prefix }}company"
placeholder="{{ "address.companyNamePlaceholder"|trans|striptags }}"
name="company"
value="{{ data.get('company') }}"
data-form-validation-required
{% if requiredMessage is defined %}data-form-validation-required-message="{{ requiredMessage }}"{% endif %}
required="required">
{% endblock %}
{% block component_address_personal_company_name_input_error %}
{% if violationPath %}
{% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
</div>
{% endblock %}
</div>
{% endif %}
{% endblock %}
{% block component_address_personal_vat_id %}
{% if showVatIdField %}
{% if config('core.loginRegistration.showAccountTypeSelection') or onlyCompanyRegistration %}
<div class="js-field-toggle-contact-type-company{% if customToggleTarget %}-{{ prefix }}{% endif %} js-field-toggle-contact-type-vat-id">
{% block component_address_personal_vat_id_fields %}
<div class="{{ formRowClass }}">
<div class="form-group col-12">
{% sw_include '@Storefront/storefront/component/address/address-personal-vat-id.html.twig' with {
'vatIds': data.get('vatIds'),
'editMode': true
} %}
</div>
</div>
{% endblock %}
</div>
{% endif %}
{% endif %}
{% endblock %}
{% block component_address_personal_fields_birthday %}
{% if showBirthdayField %}
{% block component_address_personal_fields_birthday_label %}
<label for="{{ idPrefix ~ prefix }}personalBirthday">
{{ "account.personalBirthdayLabel"|trans|sw_sanitize }}{{ config('core.loginRegistration.birthdayFieldRequired') ? "general.required"|trans|sw_sanitize }}
</label>
{% endblock %}
{% block component_address_personal_fields_birthday_selects %}
<div class="{{ formRowClass }}">
{% block component_address_personal_fields_birthday_select_day %}
<div class="form-group col-md-2 col-4">
<select id="{{ idPrefix ~ prefix }}personalBirthday"
name="{% if prefix %}{{ prefix }}[birthdayDay]{% else %}birthdayDay{% endif %}"
class="{{ formSelectClass }}{% if formViolations.getViolations('/birthdayDay') is not empty %} is-invalid{% endif %}"
{{ config('core.loginRegistration.birthdayFieldRequired') ? 'required="required"' }}>
{% if not data.get('birthdayDay') %}
<option selected="selected"
value="">
{{ "account.personalBirthdaySelectDay"|trans|sw_sanitize }}
</option>
{% endif %}
{% for day in range(1, 31) %}
<option value="{{ day }}"
{% if day == data.get('birthdayDay') %} selected="selected"{% endif %}>
{{ day }}
</option>
{% endfor %}
</select>
{% block component_address_personal_fields_birthday_select_day_error %}
{% if formViolations.getViolations('/birthdayDay') is not empty %}
{% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' with {
violationPath: '/birthdayDay'
} %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
{% block component_address_personal_fields_birthday_select_month %}
<div class="form-group col-md-2 col-4">
<select name="{% if prefix %}{{ prefix }}[birthdayMonth]{% else %}birthdayMonth{% endif %}"
class="{{ formSelectClass }}{% if formViolations.getViolations('/birthdayMonth') is not empty %} is-invalid{% endif %}"
{{ config('core.loginRegistration.birthdayFieldRequired') ? 'required="required"' }}>
{% if not data.get('birthdayMonth') %}
<option selected="selected"
value="">
{{ "account.personalBirthdaySelectMonth"|trans|sw_sanitize }}
</option>
{% endif %}
{% for month in range(1, 12) %}
<option value="{{ month }}"
{% if month == data.get('birthdayMonth') %} selected="selected"{% endif %}>
{{ month }}
</option>
{% endfor %}
</select>
{% block component_address_personal_fields_birthday_select_month_error %}
{% if formViolations.getViolations('/birthdayMonth') is not empty %}
{% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' with {
violationPath: '/birthdayMonth'
} %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
{% block component_address_personal_fields_birthday_select_year %}
<div class="form-group col-md-2 col-4">
{% set currentYear = "now"|date('Y') %}
{% set startYear = currentYear - 120 %}
<select name="{% if prefix %}{{ prefix }}[birthdayYear]{% else %}birthdayYear{% endif %}"
class="{{ formSelectClass }}{% if formViolations.getViolations('/birthdayYear') is not empty %} is-invalid{% endif %}"
{{ config('core.loginRegistration.birthdayFieldRequired') ? 'required="required"' }}>
{% if not data.get('birthdayYear') %}
<option selected="selected"
value="">
{{ "account.personalBirthdaySelectYear"|trans|sw_sanitize }}
</option>
{% endif %}
{% for year in range(currentYear, startYear) %}
<option value="{{ year }}"
{% if year == data.get('birthdayYear') %} selected="selected"{% endif %}>
{{ year }}
</option>
{% endfor %}
</select>
{% block component_address_personal_fields_birthday_select_year_error %}
{% if formViolations.getViolations('/birthdayYear') is not empty %}
{% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' with {
violationPath: '/birthdayYear'
} %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
</div>
{% endblock %}
{% endif %}
{% endblock %}
{% endblock %}