[Fixed: issue #2384 has been resolved.]
This commit is contained in:
parent
e78e61d989
commit
d2a2b2a8c6
|
|
@ -22,6 +22,7 @@ class VatValidator
|
|||
*/
|
||||
protected static $pattern_expression = array(
|
||||
'AT' => 'U[A-Z\d]{8}',
|
||||
'AE' => '\d{15}',
|
||||
'BE' => '(0\d{9}|\d{10})',
|
||||
'BG' => '\d{9,10}',
|
||||
'CY' => '\d{8}[A-Z]',
|
||||
|
|
@ -50,6 +51,7 @@ class VatValidator
|
|||
'SE' => '\d{12}',
|
||||
'SI' => '\d{8}',
|
||||
'SK' => '\d{10}',
|
||||
'JP' => '\d{12}|\d{13}',
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
@ -61,14 +63,14 @@ class VatValidator
|
|||
*/
|
||||
public function validate(string $vatNumber): bool
|
||||
{
|
||||
$country = request()->input('country');
|
||||
$vatNumber = $this->vatCleaner($vatNumber);
|
||||
list($country, $number) = $this->splitVat($vatNumber);
|
||||
|
||||
if (! isset(self::$pattern_expression[$country])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return preg_match('/^' . self::$pattern_expression[$country] . '$/', $vatNumber) > 0;
|
||||
return preg_match('/^' . self::$pattern_expression[$country] . '$/', $number) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -81,4 +83,17 @@ class VatValidator
|
|||
$vatNumber_no_spaces = trim($vatNumber);
|
||||
return strtoupper($vatNumber_no_spaces);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $vatNumber
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function splitVat(string $vatNumber): array
|
||||
{
|
||||
return [
|
||||
substr($vatNumber, 0, 2),
|
||||
substr($vatNumber, 2),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -227,6 +227,7 @@ return [
|
|||
'first_name' => 'First name',
|
||||
'last_name' => 'Last name',
|
||||
'vat_id' => 'Vat id',
|
||||
'vat_help_note' => '[Note: Use Country Code with VAT Id. Eg. INV01234567891]',
|
||||
'title' => 'Add Address',
|
||||
'street-address' => 'Street Address',
|
||||
'country' => 'Country',
|
||||
|
|
|
|||
|
|
@ -45,7 +45,9 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') }}"
|
||||
v-validate="''" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,9 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') ?: $address->vat_id }}"
|
||||
v-validate="''" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
|
|
|
|||
|
|
@ -39,7 +39,9 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id" class="required">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id" class="required">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') }}" v-validate="" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,9 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id" class="required">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<label for="vat_id" class="required">{{ __('shop::app.customer.account.address.create.vat_id') }}
|
||||
<span class="help-note">{{ __('shop::app.customer.account.address.create.vat_help_note') }}</span>
|
||||
</label>
|
||||
<input type="text" class="control" name="vat_id" value="{{ old('vat_id') ?? $address->vat_id }}" v-validate="" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue