|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / dev2.destoffenstraat.com / app / code / Geissweb / Euvat / Helper / VatNumber / |
Filename | /home/dev2.destoffenstraat.com/app/code/Geissweb/Euvat/Helper/VatNumber/Formatter.php |
Size | 2.6 kb |
Permission | rwxrwxrwx |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 09-Jul-2024 08:41 |
Last accessed | 21-Aug-2025 12:29 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
* ||GEISSWEB| EU VAT Enhanced
*
* NOTICE OF LICENSE
*
* This source file is subject to the GEISSWEB End User License Agreement
* that is available through the world-wide-web at this URL: https://www.geissweb.de/legal-information/eula
*
* DISCLAIMER
*
* Do not edit this file if you wish to update the extension in the future. If you wish to customize the extension
* for your needs please refer to our support for more information.
*
* @copyright Copyright (c) 2015 GEISS Weblösungen (https://www.geissweb.de)
* @license https://www.geissweb.de/legal-information/eula GEISSWEB End User License Agreement
*/
declare(strict_types=1);
namespace Geissweb\Euvat\Helper\VatNumber;
class Formatter
{
/**
* Format VAT Number
*
* @param string|null $vatNumber
* @param string|null $countryCode
*
* @return bool|string
*/
public function formatVatNumber(?string $vatNumber, ?string $countryCode)
{
if ($vatNumber !== null) {
$vatNumber = str_replace(['GST', 'VAT', 'USt-ID', ' ', "\t", "\n"], '', $vatNumber);
if ($countryCode !== null && preg_match('/^[A-Z][A-Z]/i', $vatNumber) === 0) {
if ($countryCode === 'GR') {
$countryCode = 'EL';
}
$vatId = $countryCode . $vatNumber;
} else {
$vatId = $vatNumber;
}
return strtoupper(preg_replace("/[^a-zA-Z0-9]+/", "", $vatId));
}
return false;
}
/**
* Extracts Country from VAT-ID
*
* Greece and Northern Ireland have different VAT number prefix
*
* @param string $vatId
*
* @return string
*/
public function extractCountryIdFromVatId(string $vatId): string
{
if (preg_match('/^[A-Z][A-Z]/', $vatId) == 1) {
$country = strtoupper(substr($vatId, 0, 2));
if ($country === 'EL') {
$country = 'GR';
}
if ($country === 'XI') {
$country = 'GB';
}
return $country;
}
return '';
}
/**
* Splits VAT number into array with country code and the number
*
* @param string $vatId
* @param bool $withoutCountryTransformation
* @return array
*/
public function splitVatNumber(string $vatId, bool $withoutCountryTransformation = false): array
{
return [
'cc' => $withoutCountryTransformation ?
strtoupper(substr($vatId, 0, 2)) : $this->extractCountryIdFromVatId($vatId),
'number' => substr($vatId, 2)
];
}
}
/**
* ||GEISSWEB| EU VAT Enhanced
*
* NOTICE OF LICENSE
*
* This source file is subject to the GEISSWEB End User License Agreement
* that is available through the world-wide-web at this URL: https://www.geissweb.de/legal-information/eula
*
* DISCLAIMER
*
* Do not edit this file if you wish to update the extension in the future. If you wish to customize the extension
* for your needs please refer to our support for more information.
*
* @copyright Copyright (c) 2015 GEISS Weblösungen (https://www.geissweb.de)
* @license https://www.geissweb.de/legal-information/eula GEISSWEB End User License Agreement
*/
declare(strict_types=1);
namespace Geissweb\Euvat\Helper\VatNumber;
class Formatter
{
/**
* Format VAT Number
*
* @param string|null $vatNumber
* @param string|null $countryCode
*
* @return bool|string
*/
public function formatVatNumber(?string $vatNumber, ?string $countryCode)
{
if ($vatNumber !== null) {
$vatNumber = str_replace(['GST', 'VAT', 'USt-ID', ' ', "\t", "\n"], '', $vatNumber);
if ($countryCode !== null && preg_match('/^[A-Z][A-Z]/i', $vatNumber) === 0) {
if ($countryCode === 'GR') {
$countryCode = 'EL';
}
$vatId = $countryCode . $vatNumber;
} else {
$vatId = $vatNumber;
}
return strtoupper(preg_replace("/[^a-zA-Z0-9]+/", "", $vatId));
}
return false;
}
/**
* Extracts Country from VAT-ID
*
* Greece and Northern Ireland have different VAT number prefix
*
* @param string $vatId
*
* @return string
*/
public function extractCountryIdFromVatId(string $vatId): string
{
if (preg_match('/^[A-Z][A-Z]/', $vatId) == 1) {
$country = strtoupper(substr($vatId, 0, 2));
if ($country === 'EL') {
$country = 'GR';
}
if ($country === 'XI') {
$country = 'GB';
}
return $country;
}
return '';
}
/**
* Splits VAT number into array with country code and the number
*
* @param string $vatId
* @param bool $withoutCountryTransformation
* @return array
*/
public function splitVatNumber(string $vatId, bool $withoutCountryTransformation = false): array
{
return [
'cc' => $withoutCountryTransformation ?
strtoupper(substr($vatId, 0, 2)) : $this->extractCountryIdFromVatId($vatId),
'number' => substr($vatId, 2)
];
}
}