Your IP : 127.0.0.1


Current Path : /home/dev2.destoffenstraat.com/app/code/Geissweb/Euvat-old/Helper/VatNumber/
Upload File :
Current File : /home/dev2.destoffenstraat.com/app/code/Geissweb/Euvat-old/Helper/VatNumber/Formatter.php

<?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
 */

namespace Geissweb\Euvat\Helper\VatNumber;

class Formatter
{
    /**
     * Format VAT Number
     * @param null $vatNumber
     * @param null $countryCode
     *
     * @return bool|string
     */
    public function formatVatNumber($vatNumber = null, $countryCode = null)
    {
        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($vatId)
    {
        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 '';
    }

    /**
     * @param $vatId
     * @param bool $withoutCountryTransformation
     * @return array
     */
    public function splitVatNumber($vatId, $withoutCountryTransformation = false)
    {
        return [
            'cc' => $withoutCountryTransformation ? strtoupper(substr($vatId, 0, 2)) : $this->extractCountryIdFromVatId($vatId),
            'number' => substr($vatId, 2)
        ];
    }
}