/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); Hacienda somos todos, menos las tecnológicasSesiónDeControl.com
Arrow

Hacienda no somos todos


2
David G. Ortiz

Periodista 'geek'. Cofundador de HojaDeRouter.com. Escribo sobre tecnología en TecnoXplora (Antena3.com). Antes pasé por lainformacion.com y los micrófonos de la Cadena SER. Firme defensor de que dormir está sobrevalorado.


Escrito el 22 de diciembre de 2012 a las 0:19 | Clasificado en Tecnología

Las empresas tecnológicas utilizan una “planificación fiscal agresiva” para pagar menos impuestos en nuestro país y los de nuestro entorno.

Apple Store del centro comercial Xanadú en Madrid (Foto: Apple)
Apple Store del centro comercial Xanadú en Madrid (Foto: Apple)

Las sucursales españolas de los siete gigantes de Silicon Valley (Apple, Google, Yahoo!, Facebook, Microsoft, eBay y Amazon, conocidos como los ‘seven majors’) pagaron en España en los últimos tres años unos impuestos de tan solo 25 millones sobre unos beneficios de al menos diez cifras. Para conseguirlo, ni siquiera tuvieron que saltarse la ley, que está llena de recovecos y puertas traseras para reducir el importe de los tributos. Utilizaron lo que eufemísticamente se denomina una “planificación fiscal agresiva”, que en palabras llanas equivale a decir que facturaron la mayor parte de sus ingresos en países donde se benefician de un menor tipo impositivo.

Un poco de contexto

En España, el Impuesto de Sociedades grava a las empresas con un 30% de sus beneficios. Solo tres países europeos tienen un tipo impositivo más elevado: Bélgica (34%), Francia (36,1%) y Malta (35%). Por eso las tecnológicas, como muchas otras grandes empresas, deciden establecerse en territorios con menor presión fiscal.

¿Y eso cómo es posible si desarrollan su actividad en el nuestro? Porque aquí no fijan un establecimiento permanente, lo fijan en otro sitio (nos dejan una representación o una oficina comercial), y la legislación española les permite atribuir los beneficios al país donde tienen establecida su residencia, siempre y cuando tenga un convenio de doble imposición firmado con el nuestro. ¿Resultado? Aquí se hinchan a ganar dinero, pero se lo llevan a otro sitio para declarar pérdidas en España y no pagar impuestos.

Aunque no existen datos oficiales, los expertos estiman que Hacienda deja de ingresar 1.000 millones de euros al año por culpa de esta artimaña fiscal de las empresas tecnológicas.

España guisa, Irlanda come

El ‘double Irish with a Dutch Sandwich’ es la técnica de “planificación fiscal agresiva” más utilizada por las tecnológicas. El procedimiento es el siguiente. Primer paso: consiguen sus clientes en España y facturan a una empresa matriz con establecimiento permanente en Irlanda (que tiene un ventajoso Impuesto de Sociedades del 12,5%) gracias al convenio de doble imposición. Segundo paso: transfieren el dinero a los Países Bajos. Y tercero: aprovechando una moratoria fiscal de 48 horas vuelven a transferirlo a un paraíso fiscal, como pueden ser las Islas Caimán o las Bermudas.

Desde estos paraísos fiscales, donde concentran el grueso de su capital, estas multinacionales tecnológicas mueven el dinero necesario para afrontar futuras inversiones, como la compra de patentes u otras empresas del sector.

La doble vía de Apple

La empresa más valiosa del mundo amasó 36.800 millones de euros fuera de los Estados Unidos hasta el 29 de septiembre de este año, pero aplicando el ‘double Irish with a Dutch sandwich’ pagó solo 713 millones en impuestos, un 1,9% del total, tal y como se ve en la documentación entregada por la compañía al regulador de la bolsa estadounidense.

En España, la firma de la manzana mordida vende sus productos a través de las Apple Store y de tiendas de terceros. Cada uno de esos negocios funciona de forma distinta. El primero lo gestionan a través de Apple Retail, que ingresó 76,3 millones de euros por ventas en 2011, tal y como figura en el Registro Mercantil. Sin embargo, su beneficio antes de impuestos fue de 364.138 euros, un 0,4% de sus ingresos. ¿Y eso? Pues resulta que gastaron mucho dinero (60,5 millones) en comprar los productos a la matriz corporativa en Irlanda, Apple Sales International, dejando un estrechísimo margen de beneficio en nuestro país. Y así se marchó el dinero de los consumidores españoles a las arcas de Dublín, dejando solo 143.115 euros a nuestro maltrecho fisco. Recordemos que los de Cupertino habían ganado más de 76 millones.

¿Y qué hacen con los productos que venden a través de terceros? Juegan con las comisiones. Apple Marketing Iberia, la empresa que distribuye los ordenadores, móviles y tablets que se venden por ejemplo en la FNAC o el Corte Inglés, solo se queda un 1% a modo de comisión. El resto se va para Irlanda. Así, de los 1.775 millones por ventas a terceros que ingresaron en 2011, solo pagaron impuestos por sus 2,49 millones de beneficio (es decir, por un 0,14% de las ventas).

La ruina de Google

Lo suyo es todavía más chocante. El todopoderoso buscador, a través del cual los españoles llevan a cabo el 90% de sus búsquedas, es un negocio ruinoso en nuestro país. O al menos eso es lo que declaran, a pesar de que Infoadex estima que 368 de los 460 millones que se movieron en el mercado de la publicidad por enlaces patrocinados en 2011 fueron a parar a la ‘gran G’.

Aunque parezca extraño, las cuentas al final acaban saliendo. En 2011, Google España declaró 74.683 euros de pérdidas, pese a que sus ingresos por ventas fueron de 38,3 millones, según el Registro Mercantil. El año anterior también palmaron dinero. Pero la declaración de Hacienda les sale a devolver, porque 36,9 de esos 38,3 millones fueron facturados a Google Irlanda, igual que los millones de euros en publicidad. Sumando otros gastos, al final el fisco español se queda viéndolas venir. Y en principio, aunque Hacienda ha abierto una investigación, las cosas se hicieron de manera legal, solo que con una “planificación fiscal agresiva”.

La historia no acaba aquí, porque a nuestros vecinos del trébol tampoco les han dejado catar muchos impuestos. Según la agencia Bloomberg, Google se ahorró en 2011 más de 1.500 millones de euros trasladando gran parte de sus ingresos (aproximadamente el 80%) a su matriz en el paraíso fiscal de las Bermudas, Google Ireland Holdings, que tiene miles de empleados y concentra cerca del 90% de los ingresos del gigante fuera de los Estados Unidos.

Microsoft, Facebook, eBay…

Estas y otras multinacionales tecnológicas han puesto en práctica planificaciones fiscales similares a las de Apple y Google. Microsoft Ibérica jugó con las comisiones (en este caso por las licencias de su software) y facturó el 80% de los 157,6 millones que ingresó en España en 2011 a su hermana irlandesa, Microsoft Ireland Operations Ltd. Al final el beneficio, por el que Hacienda recauda los impuestos, solo fue de 28 millones.

En el caso de Facebook, los ingresos en 2011 fueron de 1,7 millones, procedentes de la publicidad. Pero se fueron a Irlanda y aquí se quedaron los gastos. El fisco solo recaudó 39.740 euros en concepto de Impuesto de Sociedades.

Algo distintos son los casos de eBay y Yahoo!, que tienen sus sedes en Suiza. La primera pagó apenas 9.500 euros de impuestos en 2011 – incluyendo PayPal y BuyVip – y la segunda ha dado pérdidas durante tantos años que acumula bases imponibles negativas y no ha desembolsado un duro al fisco desde 2009.

Amazon hace lo mismo pero con base en Luxemburgo, que tiene un Impuesto de Sociedades del 29%, pero lo recorta hasta en un 80% para los beneficios derivados de la propiedad intelecutal y además aplica un IVA de solo un 3% a los libros electrónicos, que son el principal negocio de la firma. En España, año tras año, declaran beneficios nulos o incluso pérdidas, ya que su filial actúa como un simple intermediario encargado de la distribución. Son las ventajas del comercio electrónico.

La excepción Samsung

La multinacional coreana es la prueba de que aún queda un rayo de esperanza. Tras una inspección de la Agencia Tributaria, Samsung ha llegado a un acuerdo con Hacienda para revisar los precios de transferencia, es decir, el margen de beneficio que obtiene la filial española tras comprar sus productos a la empresa matriz. Concretamente, ha desembolsado 9,5 millones de euros por el Impuesto de Sociedades de los años 2005, 2006, 2007 y 2008.

No obstante, el mayor fabricante de teléfonos inteligentes del mundo es la tecnológica que lleva a cabo la planificación fiscal menos agresiva. Su filial en España factura directamente los productos, sin pasar por Irlanda. En 2011 ingresaron 1.352 millones, que suenan mucho más creíbles que las cifras de Apple o Google. ¿Caerían también el buscador y los de la manzana mordida en las garras de Hacienda si fueran coreanos y no estadounidenses? Eso se lo dejamos a la imaginación de cada uno.

¿Nadie va a hacer nada?

Aunque ha tardado en reaccionar, el ministerio de Hacienda, inmerso en una cruzada contra el fraude fiscal (la crisis y el déficit obligan), ha anunciado la creación de una Oficina Nacional de Fiscalidad Internacional, que a partir de enero controlará las prácticas de las multinacionales – especialmente las tecnológicas – y tratará de evitar que eludan el pago de impuestos en España.

“Es realmente una reordenación de los recursos humanos de la Agencia Tributaria. El personal del departamento de fiscalidad internacional y los inspectores que han estado investigando temas de gastos financieros en la actual Delegación Central de Grandes Contribuyentes pasarán a la nueva Oficina”, explica Antonio Pina, experto en fiscalidad internacional de la firma de servicios profesionales Ernst & Young. Y apostilla: “esperemos que con más y mejores recursos”.

Pero no es algo que nuestro Gobierno pueda hacer solo, sino que es necesaria una estrecha colaboración con nuestros socios internacionales, que se está produciendo en el seno de la OCDE. Esta organización ha puesto en marcha un proyecto para estudiar y promover cambios en la normativa tributaria de los países miembros con el objetivo de “evitar el fenómeno de la erosión de la base imponible y el traslado ilegítimo de beneficios entre países”.

Hay dos cosas en juego. En primer lugar, regular los precios de transferencia (como hemos explicado, los que paga la filial del país con impuestos altos a la matriz del país con impuestos bajos) para que la compra se haga a precio de mercado. De este modo los márgenes de beneficio, que determinan la base imponible del Impuesto de Sociedades, no serían tan reducidos como en la actualidad y las empresas tendrían que pagar más impuestos allí donde venden sus productos.

Y, en segundo lugar, actualizar el capítulo VI de las Directrices de la OCDE sobre precios de transferencia, en el que se aborda el efecto de los intangibles en la fijación de dichos precios. Esto permitiría atar en corto a empresas como Google y Facebook, que alegan que el valor de sus activos inmateriales (el algoritmo del buscador, la base de datos de la red social…) está en Irlanda y no en España, así que es allí donde se producen sus beneficios y se pagan sus impuestos. Retocando las leyes se podría conseguir que las empresas paguen en cada país de acuerdo con la actividad real que desempeñan.

Por otro lado, España necesita incrementar las medidas de control. Pino utiliza una anécdota para ilustrarlo: “Una compañera alemana se sorprendió el otro día cuando le informamos de que en España no todas las empresas pasan inspección. ¡En Alemania las revisan todas!”.

Desde luego, lo que no parece admisible es que multinacionales con miles de usuarios en España, que ganan cientos o miles de millones, saquen el dinero del país y se vayan de rositas. Si Hacienda somos todos, Montoro y los suyos van a tener que trabajar duro para demostrarlo.

Los votantes dicen...
  1. […] en nuestro país. Es cierto que, a día de hoy, la compañía de la ‘gran G’ paga unos impuestos ridículos en muchos países europeos, pero la imagen de los estados europeos no quedaría muy bien si una empresa como Google anuncia su […]

  2. […] en nuestro país. Es cierto que, a día de hoy, la compañía de la ‘gran G’ paga unos impuestos muy reducidos por estos lares, pero la imagen de las naciones europeas no saldría muy bien parada si una empresa de la talla de […]

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>