[Fixed: issue #2384 has been resolved.]

This commit is contained in:
Vivek Sharma 2020-02-08 12:59:08 +05:30
parent e78e61d989
commit d2a2b2a8c6
6 changed files with 30 additions and 6 deletions

View File

@ -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),
];
}
}

View File

@ -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',

View File

@ -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="&quot;{{ __('shop::app.customer.account.address.create.vat_id') }}&quot;">
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>

View File

@ -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="&quot;{{ __('shop::app.customer.account.address.create.vat_id') }}&quot;">
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>

View File

@ -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="&quot;{{ __('shop::app.customer.account.address.create.vat_id') }}&quot;">
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
</div>

View File

@ -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="&quot;{{ __('shop::app.customer.account.address.create.vat_id') }}&quot;">
<span class="control-error" v-if="errors.has('vat_id')">@{{ errors.first('vat_id') }}</span>
</div>