Y si no hay AJAX?

Filed in Artículos TécnicosTags: , , , , , ,

Recientemente escribí un comentario en el blog de Alfredo Artiles1, Bitácora de Webmaster, en un artículo relacionado con la nueva propuesta de los señores de google para hacer indexable un site en Ajax. En su artículo Alfredo resumía que aunque vayan por el buen camino al intentarlo, el uso de las técnicas que proponía Google para conseguirlo no le parecía muy adecuado. Yo voy un paso más allá y diría que sería todo un error implementar las opciones que comenta Google, pero esto daría para otro artículo2.

La cuestión es que su post viene a cuento porque hace tiempo que os quería comentar como, creo, que debería hacerse una web con contenido en AJAX y creo que este sería el mejor momento para ello.

Lo primero, comentaros que el problema de AJAX no solo está con los buscadores, sino principalmente con la usabilidad y accesibilidad. Ese pequeño porcentaje de usuarios que llega al site desde navegadores especiales para discapacitados, o desde navegadores solo texto, o incluso en un porcentaje mayor, aquellos que acceden desde su móvil, ellos son el principal objetivo a solventar cuando se desarrolla en AJAX, no los buscadores que en este caso creo que son secundarios (aunque también salgan muy beneficiados).

Bueno, entonces la panacea al respecto, cual sería? Simple, no desarrollar en AJAX!

Esto que parece una perogrullada es realmente la mejor solución para corregir el problema, desarrollar sin AJAX y añadir la capa de AJAX a posteriori. Con esto conseguimos crear una navegación lo más sólida posible fuera de todo JavaScript, y una vez creada añadimos mediante JS la capa AJAX, a base de modificar los enlaces internos por llamadas asíncronas al servidor y un par más de detalles en el código. Así, si un navegador sin JS o un Bot llegan a tu site con ganas de recorrerlo entero no tendrán ningún problema y podrán navegar por todo el site de forma perfecta.

También están los beneficios añadidos, como poder abrir enlaces en pestañas/ventanas nuevas, crear otra capa de independencia entre la Vista y los Scripts (digamos MVSC), o uno más importante aun el de poder enlazar directamente una página interna desde cualquier lado sabiendo que va a llegar a dicho enlace.

Nota: A partir de aquí el asunto se pone muy denso, así que si lo tuyo no es la programación front o bakend o la maquetación o si no comprendes algo de AJAX, mejor quédate con la idea vista hasta ahora y mira ejemplos en, por ejemplo, la web de Coleccionismo Baral

Lo primero que haremos será dar por sentado unos conceptos de la programación del site:

  • Se programa OOP (aunque en este caso no sea necesario, pero así vamos inculcando las nociones básicas mínimas)
  • Usamos el patrón de diseño de software MVC, separando la Vista y el Control sobretodo.
  • Usamos también el patrón Façade para tener así un único punto de entrada al código.
  • Usamos URLs SEO friendly del tipo http://host/casa/coche que luego pasarán a ser http://host#casa/coche

Bueno, una vez está claro esto, empezamos con la programación del site, creamos la navegación básica, la lógica interna del site, los modelos,… En fin todo el desarrollo pero sin incluir nada de AJAX por ahora. Una vez realizada la navegación y teniendo en cuenta que usamos los patrónes Façade y MVC incluimos un pequeño script3 al código del site similar al siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//Script File
 
// variable general que nos servirá para chequear si hay que cambiar contenidos por AJAX
var navAjaxCheck = false;
 
// Función goto, encargada de hacer la llamada asíncrona
// La variable jsonValue incorpora toda la información necesaria
var goto = function (jsonValue)
{
	// Posibles excepciones a la navegación por AJAX
	if (location.hash.test("signup"))
  		return false;
 
	//waiter es para añadir el típico efecto de sombreado en el site mientras se cambia el contenido.
	jsonValue.waiter = jsonValue.waiter === false ? false : true;
 
	//update es el id del contenedor a remplazar
	// (false en caso de no quere actualizar nada y "contenedor general" en caso de "null")
	jsonValue.update = jsonValue.update ? jsonValue.update :
		(jsonValue.update === false ? false : 'contenedor_general');
 
	// El nuevo valor del href
	jsonValue.href = jsonValue.href.test("#") ? " " : jsonValue.href;
 
	new Request.HTML({
	// Aquí está el punto importante, mandamos toda la info a /ajax/
		url: '/ajax/'+JSON.encode(jsonValue),
/*	Se desactiva por fallos con el IE.
		update: $(jsonValue.update),
		useWaiter: jsonValue.waiter,
		waiterOptions: {
		    baseHref: '/',
		    img: {
		        src: 'img/loader.gif',
		        styles: {
		            width: '220',
		            height: '20'
		        }
		    },
		    layer: {
		        background: '#fff',
		        opacity: 0.9
		    }
		},
		waiterTarget: jsonValue.update, */
	// Una vez completado guardamos el href y la información donde corresponde
		onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){
			$(jsonValue.update).set('html',responseHTML);
			//reseteamos el init() ya que hay contenido nuevo en el site.
			init();
			if (jsonValue.href && jsonValue.replace)
			 	location.hash = "#"+ jsonValue.href.replace(jsonValue.replace,"");
			//reseteamos la variable navAjaxCheck para contener la información del site actual
			navAjaxCheck = location.hash;
		}
	}).send();
};
 
//Función recursiva encargada de hacer de watchdog para la navegación asíncrona (dotando de la opción de retroceder/avanzar)
var navAjax = function()
{
	// Posibles excepciones a la navegación por AJAX
	if (location.href.test("signup"))
		return false;
 
	// Esto se da en el caso de que estemos en una URL normal tipo /casa/coche, que rápidamente la formateamos a
	// #casa/coche para que siga la lógica de navegación asíncrona.
	if (location.pathname != '/')
	{
		var href = location.href;
		var value = 'http://'+WEBHOST+'/'; // WEBHOST es una variable definida anteriormente
	 	location.href = href.replace(value,value+"#"); // por compatibilidad con IE
 
	// Comprobamos con el check generado si ha cambiado el hash de la URL,
	// en cuyo caso llamamos a goto con el nuevo hash
	}else if (location.hash != navAjaxCheck)
	{
		var href = location.hash;
		var value = '#';
		goto({ href: href.replace(value,''),  waiter:false, replace:"" });
	}
};
 
//Función principal encargada de cambiar todos los enlaces internos por llamadas asíncronas.
var addAjax = function ()
{
	// Usamos una frase de testeo simple, el dominio del site (también podría ser algo más complicado mediante exp. regulares)
	var replace = 'http://'+WEBHOST+'/';
 
	// Buscamos todos los enlaces del site
	$$('a').each(function(el)
	{
		var href = el.href;
		// Buscamos los que enlazan dentro del site y evitamos los marcados como "noAjax"
		// a los encontrados así les quitamos la opción por defecto y añadimos la opción de Ajax
		if (href.test(replace) && el.className != "noAjax")
			el.addEvent('click', function(event)
			{
				event.preventDefault();
				goto({href: href, replace: replace});
			});
 
	});
 
// función con las llamadas necesarias al cargar el site (incluir el navAjax, chequear variables...)
var init = function()
{
 
	// Añadimos el ajax
 
	addAjax();
 
	// ....
}
 
// Añadimos los eventos justo cuando el DOM ya se haya cargado.
window.addEvent('domready', function() {
 
	// Lanzamos el control de AJAX con un periodical para que se ejecute continuamente
	// el tiempo aproximado depende de la carga de JS del site y al gusto de cada uno (entre 1 y 5 segundos)
	navAjax.periodical(1000);
 
	// Cargamos el init con la información necesaria.
	init();
 
	// Cargamos el resto de funcionalidades que solo son necesarias una vez.
}
 
};

Como podréis ver, este JS está bastante mal codificado, lo suyo sería crear una clase completa que se encargue de toda la parte de navegación AJAX y hacerle mucho refactoring para conseguir algo decente, pero la idea es explicar los principios de acción, no daros un código 100% válido y correcto.

Ahora, solo tendremos que añadir al controller de la aplicación un método para cuando llegue por “/ajax/” que:

  • Defina la constante AJAX = TRUE4.
  • Coja la información pasada por la variable json del segundo parámetro y cambie la REQUEST_URI por la url del mismo.
    1
    2
    3
    4
    5
    
    //Algo similar a esto debería valer
    $json = /* variable con la información */
    $ajax = json_decode(stripslashes($json), TRUE);
    $url = $ajax["href"] ? $ajax["href"] : $_SERVER["HTTP_REFERER"];
    $_SERVER['REQUEST_URI'] = str_replace("http://".$_SERVER['SERVER_NAME'], '', $url);
  • Continue de forma normal con el controller

Ahora la navegación para el resto del código es normal, hasta que llegamos a la parte de vista, donde utilizando la contante definida AJAX para saber si el usuario está utilizando AJAX o no y en caso afirmativo mostrar solo la información referente al AJAX que queremos, evitando mostrar por ejemplo la sección de “header” o las secciones fijas del template como el footer… Eso a gusto.

Como veis no es tan difícil añadir después la capa de AJAX y así se consigue una navegación con y sin JS casi-perfecta que facilitará y mucho la vida a navegadores y buscadores.

TODO: como observaréis el código JS está muy sucio y habría que hacer un refactoring completo de él. También habría que añadirle la posibilidad de controlar las anclas que ya existieran en el código (por ejemplo quitándolas y añadiendo un efecto de movimiento en la página al clicar sobre el enlace).

La parte del Controller y la de Vista las he dejado muy abiertas, esto es porque aquí cada maestrillo tiene su librillo, así que no he querido meterme mucho en como lo hago yo para no complicar más las cosas.

Y por último decir que en mi caso empecé usando una constante para definir el AJAX, pero rápidamente deseché esta opción ya que es posible que sobre una página se realicen llamadas sobre distintas secciones por ejemplo y al definir solo una constante esto no se cumple. Aquí lo que suelo hacer5 es pasar la información a través de la variable json(“update”) los campos a modificar, e incluir un código similar a este en el método que controla el AJAX para pasarlo a la parte de vista.

if ($ajax["update"])
{
	$zonas = explode ("::",$ajax["update"]);
	foreach ($zonas as $key => $value)
		$ajax[$value] = true;
}
  1. aka @aartiles
  2. Solo diré que con lo fácil de modificar que dicen que es, por qué los señores de Google no han realizado ya los cambios en su código?
  3. Ojo, que estamos trabajando con Mootools y ClientCide y con un código bastante sucio y obsoleto, por cierto
  4. Esto es ligeramente más complicado, pero para simplificar dejemoslo así por ahora
  5. Aunque también habría que refactorizar ya que no me llega a convencer

Lo que se pide, lo que se paga, lo que se obtiene

Filed in Artículos de EmpresaTags: , , ,

Quien más, quien menos, alguna vez ha tenido que pasarse algún tiempo buscando un nuevo puesto de trabajo. Y una de las formas más habituales de hacerlo es a través de empresas online de búsqueda de empleo. Lo bueno que tiene esto es que sin salir de casa tienes miles de ofertas, lo malo, que es un campo de cultivo para timadores, usureros y explotadores, por lo menos en el sector online.

El mayor problema de este sector es que lo mueven personas que en un 70% de los casos (quitemos startups y casos particulares) no tienen conocimientos técnicos o artísticos alguno, esto a priori no parece problema, y no debería serlo si siguiéramos los cauces normales en cuanto a niveles, grados y estructura dentro de una empresa. Yo no tengo porque saber programar, para eso me sobraría tener un CTO que se encargara de ese área y sobre el que poder delegar. Este a su vez tendría una plantilla compuesta por Project Manager, Senior Analyst, Senior Programmer, Junior Programmer. Lógicamente esta estructura en empresas pequeñas y medianas no se puede dar y hay que recurrir a recortar la estructura a uno o dos puestos nada más.

Y aquí es donde viene el problema, y es que buscamos remplazar puestos hacia arriba y no hacia abajo. Que significa esto, pues que si no podemos tener un Senior Analyst, no buscamos que el PM haga su trabajo, sino que el SP cubra las deficiencias. Esto en un puesto no es tan grave, el problema es cuando se quiere que un Junior cubra los puestos de Project Manager y Senior Analyst.

Hay que entender que todo trabajo requiere de un proceso de aprendizaje y que es necesario cubrir todos o casi todos los escalones hasta llegar arriba, ir saltándose escalones solo traerá problemas a la empresa. Y aquí es donde siempre nos equivocamos por creer que cualquier Junior puede llegar a hacer cosas de Project Manager, o que tiene la experiencia suficiente para hacerse cargo sin seguimiento de cualquier proyecto.

Luego está el aspecto monetario lógicamente, ya que un CTO puede cobrar 3 o 4 veces más que un Junior, lo cual visto al revés, implica que puedes tener a 4 Juniors por el precio de un CTO.

Y para completar este planteamiento erróneo, aparecen las empresas online de búsqueda de empleo1. Lugares donde cientos de personas buscan desesperadamente una oferta de trabajo donde dejar el CV, el campo perfecto para empresarios con ganas de ahorrarse un pastón que se creen que poniendo ofertas para Juniors2 con unos altos (y variopintos) requerimientos mínimos tienen todo solucionado.

Un ejemplo3 sería:

Analista Programador PHP:

Se busca una persona, joven, extrovertida y con 2-3 años de experiencia en desarrollo PHP, importaciones, pasarelas, web service, XML, etc.

Los entornos que tendrá que conocer serán los siguientes:

- PHP 4/5
- Conocimientos shell script y librerias linux auxiliares (imagemagik,gd…)
- Administracion básica de servidores linux.
- XHTML transitional o strict/ CSS 2.0
- Jquery , Jquery-ui , algun framework javascript
- MySQL 4

15.000 € – 24.000 € Bruto/año

Empresa que busca un Senior Analyst, con 3 años de experiencia y con los perfiles de programador backend, administrador de sistemas, maquetador, programador frontend y administrador de DB4 y que paga como se pagaría a un becario o a un Junior5.

Lógicamente, la persona que llegue a esta oferta de trabajo, si cumple los requerimientos mínimos con la experiencia indicada en empresa, será porque se encuentra en una situación desesperada a raíz de la crisis en la que nos encontramos, luego el empresario estaría siendo un usurero y estafador. Si la persona que llega miente en cuanto a la experiencia profesional o a los conocimientos, pero no en cuanto al rango salariar, nos encontramos con que el empresario está contratando a un Junior para realizar labores de Senior Analyst, luego entra en el rango de explotador.

Pero la cosa no acaba ahí, sino que luego, para rematar la faena, nos encontraremos a un Junior con muy poquita experiencia, pero con ganas de comerse el mundo y sin saber decir esto no se hacerlo realizando desarrollos avanzados a destajo, sin aprender lo más mínimo y chapuceando con lo poco que sabe. Conclusión fácil, el desarrollo que consigues es barato, pero si fuese una casa no me verías nunca acercarme ni al portal de la misma. Y vendrán los problemas después ya que el trabajo es nefasto, porque tiene mil bugs de seguridad, porque está hardcodeado, porque no es escalable, ni óptimo en cuanto a uso de los recursos… Y será cuando por desgracia, y esto pasa más de lo que nos creemos, tengamos que recodificar todo el proyecto y gastarnos un dineral innecesario en auditorías externas, programadores expertos y demandas por clientes cabreados.

Entonces, la pregunta sería, cual es la forma si no hay dinero?

Para empezar, lo fundamental, es siempre tener claro que hay rangos en la profesión, que los rangos no están por gusto y tampoco sus salarios y que cuanto más a rajatabla cumplas esta estructura mejor te irá. Tener también en cuenta que un Junior es una persona que necesita aprender y aprehender de un superior y no por arte divina6. Y que, por tanto, la formación es algo fundamental para crear un equipo.

Si no puedes tener un CTO, prueba con un PM o un Senior Analyst y si solo puedes optar a Juniors, preocupate muy mucho en formarlos, hay mil opciones en este aspecto, desde cursos profesionales que cuestan un dineral hasta gratuitos subvencionados por el estado. Pero intenta siempre formarles al máximo, además como buenos Juniors te lo agradecerán, reforzando así el lazo empresa-trabajador.

Y para terminar, pongámonos en una situación real, por ejemplo la mía, con un perfil netamente tecnológico. Una posible plantilla estaría compuesta por puestos de Senior Analyst y Juniors, siendo mi labor la de CTO y PM encargándome en todo momento de su seguimiento, análisis, ayuda y aprendizaje y buscando para el área de diseño, por ejemplo, un CDO al que delegar el seguimiento y formación del personal de dicha área.

  1. Ojo, que la culpa no es suya, ellas son solo el campo de cultivo de los empresarios-listillos
  2. O para Senior Analyst con precios de Junior
  3. Tampoco hay que buscar mucho, esta oferta está ahora mismo activa junto con otras más que había seleccionado en apenas 5 minutos de búsqueda
  4. Cierto es que no dice nada de administrar, pero está claro que le tocará administrar la BD
  5. Esto da un sueldo mensual neto entre 880 y 1330€
  6. Ten esto en cuenta también a la hora de contratar un CTO, ya que tener a un super experto que no pasa por las oficinas tampoco te servirá de mucho, y este es un caso real

Citas de socialmedia y emprendedores para Noviembre

Filed in Artículos de EmpresaTags: , , , , , , ,

Bueno, preparando la lista de actos a los que asistir en Noviembre, me he dado cuenta que es muy larga para dejarla solo en mi calendario. Así que vamos a intentar reunirla entera aquí en un único post:

Si queréis que os incluya, si pensáis que me he olvidado de vuestro evento o queréis que asista, solo tenéis que poner un comentario con la actividad y algún enlace para poder cotillearla y si puedo, prometo pasarme!!

Actualizaciones:

  • Al final la fecha para el First Tuesday es el 17-11-09.
  • Añadimos el uniWeekend
  • Añadimos el “The Monday Reading Club”
  • Ponemos bien la fecha del EatsAndTwitts (Gracias María por la corrección)

Baq.be – “mi” nueva generación de acortadores de url.

Filed in Artículos TécnicosTags: , , , , , ,

Bueno, hoy toca presentar mi último “campo de cultivo“: Baq.Be

Aunque, en principio, viendo el estado actual del site1, más que hablaros de que es Baq.Be os voy a hablar de porque lo estoy empezando a desarrollar2 y a donde quiero llegar con él.

El por qué lo estoy desarrollando es fácil de explicar. Porque me da la gana.

Hace ya un tiempo que la mayoría de los desarrollos que me llegan me los piden sobre Drupal y claro, ahí lo de analizar, desarrollar y pensar, pues como que no. Más bien se juega a colocar y configurar cosas para que esté como al cliente le gusta. Así que decidí no enquilosarme y me puse con uno de los tantos proyecto/pruebas que tengo pendientes.

La idea de Baq.Be es desarrollar un site para acortar URLs como tantos otros que hay en el mercado. Desarrollar un portal con un API abierta para que cualquier desarrollador pueda usar Baq.Be como pasarela para acortar URLs, como tantos otros. Llenarlo de estadísticas, enlazarlo con Twitter y Facebook, permitir guardar perfiles de visitantes, como tantos otros. Subir imágenes y archivos, comprobar estadísticas de los mísmos, o modificarlos si es necesario. Si, como tantos otros.

Entonces que aporta Baq.Be frente al resto de sites que ya hacen esto? Que tiene de nuevo? Pues poca cosa, la verdad. Más bien nada nuevo para la red.

Por eso, como ya avisaba antes, lo hago porque quiero, porque así pruebo un montón de cosas que tenía en el tintero y que si no es por cosas como estas no voy a usar nunca y porque así desconecto un poco de los gestores prefabricados, vuelvo con mis librerías y las refino un poco más.

Y sobretodo, porque me gusta trastear!

Así que nada, si queréis tener una cuenta de acceso a la versión “Alfa -1” de Baq.Be e ir comprobando las novedades poco a poco, solo tenéis que mandar un correito a hola EN baq.be DOT com y os daré user/pass tan rápido como pueda.

  1. Después abandonar muchos proyectos por falta de tiempo para completarlos lo suficiente como para sacar algo 100% funcional, he decidido con Baq.Be, cambiar las formas y sacarlo nada más tener lo básico y así obligarme a ir actualizandolo y subiendo los cambios para que la gente los vea, pueda conseguir un mayor feedback y motivación para acabarlo del todo.
  2. Actualmente lleva menos de 15 horas de desarrollo, creo que lo más justo es decir “empezando a desarrollar”

Script para encontrar dominios vacíos a lo bestia

Filed in Artículos TécnicosTags: , , , ,

Este fin de semana estaba un pelín aburrido, así que tras leer un tweet de Alfredo Artiles @aartiles decidí hacer y preparar un proyectito que tenía en mente desde hacía tiempo y que como tantos otros, estaba en el cajón de TODOs.

El proyecto, del que ya hablaré detalladamente más adelante, es un acortador de url como tantos otros, vamos un campo de juegos donde ir haciendo pruebas. La cuestión es que para que fuese bueno, cuanto más corto fuese el domino mejor1 y me puse a buscar uno, claro que entre 2 y 3 caracteres, sin tener nada pensado de antes y yendo uno a uno, puede ser una locura. Así que decidí una alternativa para tener un listado más detallado y de forma automática, y me marqué este pseudo-script2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
 
echo "Script para buscar todos los whois de los dominos";
 
$letras = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$dominios = array(
//    'be' => array("precio" =>'7,95', "registered" => "/Status:      registeredED/", "free" => "/Status:      FREE/", "invalid" => "/% Invalid pattern/"),
 'tv' => array("precio" =>'20,95', "registered" => "/Status: CLIENT-XFER-PROHIBITED/",  "free" => "/No match for/", "invalid" => "/Status: CLIENT-DELETE-PROHIBITED/"),
 'eu' => array("precio" =>'6,95', "registered" => "/Registrant:/",  "free" => "/Status:    AVAILABLE/", "invalid" => "/Invalid pattern/"),
//    'asia' => array("precio" =>'10,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
 'at' => array("precio" =>'16,95', "registered" => "/registrant:/",  "free" => "/% nothing found/", "invalid" => "/% nothing found/"),
 'bz' => array("precio" =>'16,95', "registered" => "/Status:OK/",  "free" => "/NOT FOUND/", "invalid" => "/Status:CLIENT DELETE PROHIBITED/"),
 'ca' => array("precio" =>'12,95', "registered" => "/Domain status:         EXIST/",  "free" => "/Domain status:         AVAIL/", "invalid" => "/Error code:/"),
 'cc' => array("precio" =>'16,95', "registered" => "/Registrant:/",  "free" => "/No match for /", "invalid" => "/XXXXXXXXXXXXXX/"),
//    'ch' => array("precio" =>'27,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
 'cn' => array("precio" =>'28,95', "registered" => "/Domain Name/",  "free" => "/no matching record/", "invalid" => "/Sorry,/"),
 'de' => array("precio" =>'7,95', "registered" => "/Domain: /",  "free" => "/not found in database/", "invalid" => "/XXXXXXXXXXXXX/"),
//    'dk' => array("precio" =>'12,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
//    'fr' => array("precio" =>'15,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
//    'it' => array("precio" =>'15,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
 'in' => array("precio" =>'12,95', "registered" => "/Domain ID:/",  "free" => "/NOT FOUND/", "invalid" => "/XXXXXXXXXXXXXXXX/"),
 'li' => array("precio" =>'24,95', "registered" => "/Domain name:/",  "free" => "/We do not have an entry/", "invalid" => "/XXXXXXXXXXXXXXXXXXXXXXXX/"),
/*    'me' => array("precio" =>'16,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
 'nl' => array("precio" =>'7,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
 'us' => array("precio" =>'9,95', "registered" => "//",  "free" => "//", "invalid" => "//"),
 'ws' => array("precio" =>'15,95', "registered" => "//",  "free" => "//", "invalid" => "//"
*/
);
 
$resultados = fopen ("./resultados_positivos.csv", "w+");
$excepciones = fopen ("./resultados_fallados.txt", "w+");
 
$listado = array();
 
print "Creamos el abecedario \n";
foreach ($letras as $letra1)
{
 $listado[] = $letra1;
 foreach ($letras as $letra2)
 {
 $listado[] = $letra1.$letra2;
 foreach ($letras as $letra3)
 $listado[] = $letra1.$letra2.$letra3;
 }
}
 
print "Empezamos la busqueda \n";
foreach ($listado as $nombre)
{
 sleep(10);
 print "Cambiamos de nombre del abecedario. El nuevo nombre es {$nombre}. \n";
 
 foreach ($dominios as $dominio => $values)
 {
 sleep(5);
 print "Empezamos la busqueda de {$nombre}.{$dominio}\n";
 $whois = shell_exec("whois {$nombre}.{$dominio}");
 
 foreach ($values as $keyStatus => $mach)
 {
 if ($keyStatus == "precio") continue;
 if (preg_match($mach, $whois))
 {
 //Escribes y borras el $whois;
 fwrite ($resultados, "\"{$nombre}.{$dominio}\", \"{$keyStatus}\", \"{$values[precio]}\", \"{$dominio}\" ;\n");
 $whois = "";
 break;
 }
 }
 //Error si $whois no está en blanco.
 if (!empty($whois))
 {
 $tmp = "Hubo un error para el dominio {$nombre}.{$dominio}\n";
 fwrite ($excepciones, "{$tmp}\n{$whois}\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
 }
 }
}
 
fclose ($resultados);
fclose ($excepciones);
http://storage.alquesada.com/whois/
print "\n";
?>

Como veréis el script es muy sencillito, lo único que hace es crear una tabla de combinaciones con las letras del abecedario y para cada palabra creada así se pone a recorrer los distintos dominios buscando coincidencias sobre si está libre, está ocupado o da un error conocido el comando “whois“. Si lo consigue clasificar lo añade aun archivo CSV, sino guarda toda la información del whois en un archivo de excepciones para mirarlo después a mano.

El script es muy facilón y no me he molestado demasiado en las expresiones regulares, la forma de hacerlo era tan fácil como lanzar varios “whois” para cada tipo de dominio y ver que devolvía cada uno, coger la frase más significativa y meterla en la expresión regular, sin tratarla ni nada3.

Detalles:

  • Debido a las restricciones de los distintos servidores whois he metido en el script varios “sleep” para que no se quejen mucho. El problema es que esto retrasa enormemente los tiempos (en 24 horas no había llegado a los dominios “eb”). Aquí podéis jugar con los tiempos para acortar el proceso (sobretodo con el segundo “sleep“) a vuestro gusto.4
  • El script debido a lo que consume y tarda deberíais lanzarlo en linea de comandos. Si lo lanzáis a través de Apache parará al rato y no acabará.
  • Está demás decir que podéis jugar a comentar y descmentar los tipos de dominio que queráis, podéis añadir nuevos, cambiar las expresiones regulares por algo más fuerte… Libre albedrío!
  • Bueno, a los señorXs Windowseros, decirles que según creo recordar el comando “whois” no está por defecto. Ahí tendréis que ajustar parametros o descargarlo de donde sea.
  • Los precios que indico ahí son los precios para registros en DonDominio.com. Ni es mejor, ni peor que otras compañías, simplemente es la que yo uso.
  • El archivo de resultados positivos es un CVS. Es decir, lo podéis abrir con cualquier “spreadsheet” ya sea Excel, OOspreadsheet o el que tengáis. También lo podéis subir a bbdd y usarlo desde ahí.
  • OJO, esto no es la panacea y da falsos positivos, habría quizás que cambiar el orden en el array de dominios y poner “invalid” antes que “free” para recortar ciertos casos de falsos positivos, pero aun así no es seguro 100%5.

Y por último.

El archivo php lo podéis descargar de aquí:

http://storage.alquesada.com/whois/whois_script.txt

Y el archivo con los dominios hasta “eaw.tv” lo tenéis aquí:

http://storage.alquesada.com/whois/resultados_positivos.csv

Nota: no busquéis el dominio baq.be que es el que me he quedado yo al final ;-)

  1. Así que de toda mi lista de dominios no me valia ninguno
  2. Ya que yo no lo considero ni Scrpit
  3. Algo burdo, lo reconozco, pero a la vez rápido
  4. Yo no lo hice porque ya encontré el dominio y no lo necesitaba más
  5. Para estar hecho en media hora, no está mal

Usabilidad, semántica web y SEO Orgánico

Filed in Artículos TécnicosTags: , , , ,

Vamos a intentar explicar, e interrelacionar entre si, estos tres conceptos  que a priori son tan distintos que incluso los skils de los profesionales relacionados a cada uno pueden ser completamente diferentes entre si, y sin embargo la interrelación entre ellos es sumamente fuerte.

El concepto de usabilidad en España es algo muy “novedoso1 por desgracia, y realmente no se encuentran muchas empresas que realmente aporten este valor a sus proyectos. Dependiendo la mayoría de lo “usable” que sea el diseño que un artista plasma en su boceto. Lo peor de todo, es que posiblemente sea el punto más importante para que un desarrollo llegue a buen término. A más fácil de usar, más gente lo usará2

Según la Wikipedia 3 usabilidad se define como:

La facilidad con que las personas pueden utilizar una herramienta particular o cualquier otro objeto fabricado por humanos con el fin de alcanzar un objetivo concreto. La usabilidad también puede referirse al estudio de los principios que hay tras la eficacia percibida de un objeto.

Sobre la definición de “Semántica Web” o “web semánticamente correcta” se podría hablar largo y tendido ya que para un único concepto, IMHO entiendo que hay varias definiciones que vienen a ser todas las misma pero en distinto grado de complejidad. El concepto más básico y libre4, para web semánticamente correcta podría ser:

La correcta estructuración del código XHTML de un site de forma que se distinga correctamente el contenido del diseño y los scripts, las distintas secciones de la página y su relación en el proyecto, además del correcto uso de los ‘tags’ del XHTML con respecto a sus definiciones y significados.

Un concepto más amplio y complejo lo encontramos en la Wikipedia:

Se basa en la idea de añadir metadatos semánticos y ontológicos a la World Wide Web. Esas informaciones adicionales —que describen el contenido, el significado y la relación de los datos— se deben proporcionar de manera formal, para que así sea posible evaluarlas automáticamente por máquinas de procesamiento. El objetivo es mejorar Internet ampliando la interoperabilidad entre los sistemas informáticos usando “agentes inteligentes”. Agentes inteligentes son programas en las computadoras que buscan informacion sin operadores humanos.

O la más utópica y generalista que da la W3C en su guía breve de web semántica.

El principal problema que nos encontramos aquí es que al igual que la usabilidad, la semantica web pasa totalmente desapercibida en el 90% de los proyectos webs. Poca gente, por no decir ninguna, se dedica a mirar todo el código generado por el programador para una determinada página HTML. Mientras que la web se asemeje a lo que ha realizado el diseñador es más que suficiente.

Esto es normal en prácticamente todo lo que nos rodea, no nos molestamos en mirar como han arreglado nuestro coche, solo sabemos que funciona, por ejemplo. Por lo que aquí es el propio programador o maquetador la persona responsable de realizar un código de calidad que nunca o casi nunca será recompensado como se merece, pero que sin duda, como veremos después, tiene mucha importancia.

Sobre el SEO5 poco podemos decir que no se sepa ya. Según la Wikipedia:

El posicionamiento en buscadores o posicionamiento web es el resultado de la recuperación de información en la base de datos de los grandes Motores de Búsqueda de Internet por el uso de algoritmos de búsqueda en el software.

Este termino es por todos conocidos, desde el jefe hasta el becario y es una cosa que todo el mundo querría vender y hacer bien. Y es aquí donde una buena interrelación de los tres conceptos puede dar su mayor potencial, ya que hacer webs que sean óptimas para el SEO sin ser semánticamente correctas es bastante más complicado, y claro, una buena usabilidad del proyecto ayudará a crear más fácilmente una semántica más correcta.

Bueno, y según hemos visto, como se deben interrelacionar entre si para ayudarse? Veámoslo:

  • La Usabilidad es el primer estado de un proyecto, su objetivo es simplificar el uso de un producto o proyecto. Se podría decir que estructurarlo de forma cómoda para el usuario. Pues ahí está la primera ventaja, al estructurarlo para el usuario, ayudas enormemente a la estructuración semánticamente correcta del site. Al definir tanto el proyecto ayudas al programador/maquetador a distinguir entre las diferentes zonas del proyecto, que cambios tendrán y como se deberían estructurar, creando así una semántica web más solida y completa.
  • Como hemos dicho antes, una semántica web correcta, en su caso más básico, es una válida estructuración del código indicando las distintas secciones del proyecto. Pero esto más que para los usuarios es para los buscadores, que son realmente quienes ven el código y no el diseño. Luego es fácil pensar que si separamos bien contenido de información, cabecera y navegación del cuerpo y demás secciones, los buscadores entenderán perfectamente las distintas secciones, pondrán el peso correcto a cada sección y entenederán lo “puntos fuertes” del contenido, facilitando así el SEO Orgánico del site y su rápida indexación.
  • En el sentido contrario, tenemos que a la hora de crear una semántica web correcta, el tener buenas nociones de SEO puede ayudarnos y mucho, ya que la interrelación de Tips de SEO y secciones de la web no son pocas, fortaleciendo así la interrelación entre ambas6
  • Y en la otra parte, también tenemos que a la hora de crear la Usabilidad del site, tener nociones de semántica web, maquetación y diseño online, ayudarán y mucho a saber como crear estructuras, que secciones son factibles a la hora de pasarlo a la web, cuales no son recomendables por la complejidad que atañen o como poner las secciones para entregar el peso adecuado a cada una según el SEO Orgánico del proyecto.

Conclusión: Uno no puede ser experto en todos los ámbitos, pero si es necesario conocerlos lo suficiente para poder interrelacionar su trabajo con todo lo que hay alrededor del mismo. En este caso nos encontramos con tres sectores muy distintos, a los que llegan expertos de distintas ramas como informática, marketing, humanidades,… pero que deberían tener nociones básicas sobre los demás sectores para poder hacer un trabajo mucho más optimo en general.

que es cabecera, que es contenido, separando
  1. Véase que no le hemos hecho ni pizca de caso antes
  2. Simple, verdad
  3. Que recordemos no es la RAE, pero si un buen punto de partida
  4. Ojo, que la definición es mia, no la toméis por axioma
  5. En este caso nos centraremos solo sobre el SEO Orgánico
  6. Por ejemplo, puede ayudar a la hora de poner la sección de navegación, el saber que un buscador no entiende varios divs seguidos como una correlación, sino que para esto es necesario un “UL

Sintiéndome orgulloso de mi padre.

Filed in Artículos de Empresa, Artículos Técnicos

Nota: Mi intención con este blog nunca ha sido la de mostrar sentimentalismos, para eso ya tenía mi otro blog que “murió” precisamente por no escribir mucho en él. Pero aun así creo que necesario hacer este pequeño homenaje a una de las personas que más a influenciado en mi vida… Sino la que más.

Quería hacerle un homenaje, pero creo que el mejor homenaje es simplemente reproducir la serie de correos que me llegaron hoy a mi cuenta.

El primero venía de mi padre, era esta “simple” presentación que ya nos hemos pasado muchas veces entre nosotros… Solo que esta vez venía en bonito, con más colores y más vistosa.

La diferencia esta vez fue la respuesta de una de sus propias hermanas, mi tía, que entre lágrimas solo podía preguntarle a mi padre Si él “había visto tanto, tanto, y todo eso que explica el archivo”…

La respuesta de mi padre no se hizo esperar y esta prefiero transcribirla literal.

Podría escribir un libro de las noches que estando oficialmente de vacaciones que me he tirado en la playa para controlar los alijos, de los cientos de kilos de droga que tengo cogidos en mi haber y de los que estoy felicitado de forma oficial, de los rescates de ahogados de los que tengo concedida una medalla de protección civil, de las familias que han dormido en mi casa tras sufrir algún accidente de trafico donde han perdido a algún familiar, de algún tiroteo que he mantenido con extorsionadores a los que detuve tras herir a uno y por tanto sufrir el oportuno juicio del que quede indemne, de tantos y tantos delincuentes detenidos tras persecuciones espectaculares con el coche oficial, de tantos gitanos detenidos con sus furgonetas llenas de artículos robados por importes elevadisimos y que en una ocasión particular le habían robado al propio alcalde de Jumilla (mi localidad de destino), de extorsionadores amenazando de secuestro de su hijo a un director de banco. y tantos y tantos etc. que ni ahora recuerdo ni quiero relatar pues podría significar prepotencia.
Es cierto que de esto nunca he comentado y toda la familia desconoce tanto la Quesada como la Nieto, y que solo habéis tenido conocimiento debido a este mensaje que si no nunca lo hubierais sabido pues ya me conocéis, no soy de comentar estas peculiaridades del servicio.
Besos a todo

Dios, solo de recordar aquellos tiempos me pongo malo… Pero lo que le falta añadir a mi padre es como ha dejado todo eso por lo que él ha vivido y luchado para venirse a Madrid, a unas oficinas, y así poder darles a sus hijos un futuro mejor. O cuantas noches su mujer ha dormido sola mientras el estaba fuera haciendo el servicio de un guardia más para llegar a casa y sin descansar ni 4 horas volverse a poner otra vez el uniforme de Oficial para trabajar sus 8 horas correspondientes… Estando más de 16 horas continuas de servicio. O como la familia entera hemos tenido que relegar su gran labor a un simple “puesto de funcionario” de cara a la gente e incluso a los amigos porque el puesto de Guardia Civil estaba mal visto… O tantas otras…

Solo añadir que cuando a mi me preguntan que quieres ser de mayor o que quieres hacer con tu vida, yo solo puedo pensar una cosa:

Ser digno hijo de mi padre

Como facturar sin ser empresario III: El resto de papeleo

Filed in Artículos de EmpresaTags: , , , , , , , , , ,

Nota: Voy a ser un poco pesado, ya que lo he dicho en los anteriores post de la serie, pero lo repetiré aquí ya que creo que es básico. Sacaros el certificado digital ya que así podréis hacer todos los papeles a través de internet y ahorrar tiempos y costes. Toda la documentación que os indico aquí está disponible telemáticamente, así que sin moverse de la silla podrás hacer todo el papeleo.

Y para terminar ya el ciclo de “Como facturar sin ser empresario” vamos a dar los últimos toques: La entrega de modelos al estado.

Como os comentamos anteriormente, todo aquel tiempo que estéis dados de alta como empresarios tendréis que ir dando cuenta trimestralmente al estado de vuestros movimientos, más un resumen anual de todo el año.

Los plazos de entrega son para cada trimestre del 1 al 20 del primer mes siguiente al trimestre y para el anual tenéis todo Enero del año siguiente para entregarlo. Es decir,

  • Primer trimestre o 1T del 1 al 20 de Abril.
  • Segundo trimestre o 2T del 1 al 20 de Julio.
  • Tercer trimestre o 3T del 1 al 20 de Octubre.
  • Cuarto trimestre o 4T del 1 al 31 de Enero.
  • Anual. Junto con el 4T del 1 al 31 de Enero.

Nota: Repetimos. Solo tendrás que hacer los papeles en el trimestre en el que estés dado de alta como empresario (y el anual, lógicamente) por eso te recomiendo que estés el menor tiempo posible dado de alta. Te ahorrarás muchos problemas innecesarios, sobretodo teniendo en cuenta que darte de alta y de baja no cuesta nada y lo puedes hacer desde tu pc.

Los modelos a entregar en el 90% de los casos solo serán dos el modelo 303 trimestralmente y el modelo 309 al final del año, aun así comentaré todos los que deberías tener en cuenta, por si acaso.

TRIMESTRALMENTE:

  • Modelo 303: El principal modelo a entregar (hasta hace bien poquito era el modelo 300) ya que consiste en la Autoliquidación del IVA. Es decir, nosotros en nuestras facturas incluimos el IVA y con este modelo le decimos a Hacienda cuanto IVA hemos recibido en el trimestre y la forma en la que vamos a pagarselo a ellos. Lógicamente es el más importante porque toda factura que hagamos tendrá IVA y siempre tendremos que pagarlo a Hacienda. Se puede entregar de forma telemática o presencial y puedes conseguir y desacargar el modelo en el enlace de la AEAT sobre el modelo 303 y también podrás obtener información para rellenarlo en este PDF de la misma AEAT o a través del blog Conoce tus impuestos en el artículo Modelo 303: Impuesto sobre el Valor Añadido (IVA) Autoliquidación.
  • Modelo 130: Este modelo es para pagar el IRPF. Actividades económicas en estimación directa. Rara vez tendréis que entregar este modelo, ya que solo será necesario si hacéis facturas a personas particulares y solo si en el trimeste en cuestión, menos del 70% de los ingresos es sobre facturas a autónomos o empresas con el correspondiente IRPF, es decir que más del 30% es para personas particulares. En este formulario tendréis que indicar los beneficios del trimestre y sobre esos beneficios calcular el 20% que será a ingresar a nuestra querida hacienda1. Los enlaces correspondientes los tenéis en la web de la AEAT sobre el modelo 130 y en la web de Conoce tus impuestos en el artículo Modelo 130 – Pago fracionado IRPF tendrás más ayudas para rellenarlo y resolver dudas.
    La mayor diferencia de este modelo es que es “incremental”, es decir cada vez que lo entregas tienes que incluir los datos del anterior modelo que entregaste. Así al final de año, cuando entregues el modelo para el 4T no será necesario entregar un modelo especial, sino que con entregar el mismo modelo del 4T será suficiente.
  • Modelo 347: Este modelo de Declaración anual operaciones con terceras personas es más especial todavía, se debería entregar solo en el caso de que a un cliente particular se le hagan facturas por valor superior a 3.005 euros. Es bastante simple y tenéis la caratula en en este enlace de la AEAT sobre el modelo 347.

ANUALMENTE:

  • Modelo 309: Este es el modelo de IVA. Declaración-Liquidación no periódica, es decir, donde indicas el IVA que has recaudado durante todo el año. En el simplemente indicarás las cantidades totales de IVA que has recaudado durante el año anterior y podrás entregarlo durante todo el mes de Enero. Aquí tienes el enlace de la AEAT sobre el modelo 309 y aquí el enlace de la misma AEAT al PDF de las instrucciones del modelo 309.
  • Modelo 130: Como ya comentabamos antes, el modelo 130 es “incremental”, por lo que al final del año deberás entregar este modelo con todos los datos del año incluidos, pero al igual que antes te insto a que si te encuentras en esta situación preguntes a la gente de hacienda para que te confirme si debes entregarlo y que indicar en el mismo.

Bueno, con esto está todo, no hay nada más que indicar al respecto, más que recordarte que tendrás que incluir las facturas también en la declaración de Hacienda, pero eso estaba claro, no? Como veréis cuando os encontréis en la situación, no son tantos pasos como parece y te evitan de cometer infracciones frente al estado, que siempre pueden salir caras.

Un resumen breve (y quitando las cosas que normalmente no necesitarás hacer) sería:

  • Te das de alta como empresario con el modelo 037.
  • Haces el trabajo y entregas la factura indicando en ella el IVA (16%) y el IRPF (15%) si fuera necesario.
  • Te das de baja como empresario con el mismo modelo 037.
  • Al final del trimestre en el que te encuentras, entregas el modelo 303 indicando el IVA de las facturas realizadas en este trimestre y en caso de ser necesario, ingresas dicho IVA.
  • Al final del año entregas el modelo 309 indicando el IVA de todas las facturas realizadas en el año.
  • El resto de modelos y papeleos normalmente no tendrás ni que mirarlos, pero siempre es bueno que sepas que existen y cuando deberías usarlos.
  • Y ya está, no hay maś!

Nota: Solamente un detalle sin importancia, el típico unclaimed: No soy abogado, ni experto en estas lides, solo una persona que ha consultado a mucha gente para realizar estos pasos por necesidad y que quiere ponerlo más fácil al resto de la gente que se encuentra en esta situación. Por lo que no aseguro que lo que he comentado en estos tres artículos sea la “verdad verdadera” y menos la “verdad absoluta” ya que puedo estar equivocado y mucho… Si es así y sabes donde he metido la gamba, por favor, dimelo que me pondré a corregirlo a la de ya. Y al resto lo dicho, preguntar todas las dudas a Hacienda y la Seguridad Social, que son, la gran mayoría de veces, gente maja que os ayudará sin problemas.

(hasta hace bien poquito era el modelo 300)
  1. De todas formas, si os encontráis en este caso, confirmarlo primero en Hacienda, ya que es una situación especial que yo no viví y no se hasta que punto es necesario

Como facturar sin ser empresario II: Los pasos para facturar

Filed in Artículos de EmpresaTags: , , , , ,

Nota: Al igual que dejé el anterior post, este lo empiezo recordanoos que os saquéis el certificado digital ya que así podréis hacer todos los papeles a través de internet y ahorrar tiempos y costes. Toda la documentación que os indico aquí está disponible telemáticamente, así que sin moverse de la silla podrás hacer todo el papeleo.

Bueno, ya sabemos que lo de facturar así a las bravas está mal y no mola. Ahora vamos a ver los pasos para hacerlo bien, dandose de alta, pidiendo y pagando el IVA, pagando el IRPF, presentando los papeles… Uff, suena mucho, pero luego no es tanto.

A ver, para empezar tenemos que saber que según la administración pública, para casos en los que un trabajador por cuenta ajena necesita realizar un pequeño número de facturas al año fuera de su trabajo cotidiano, existe la posibilidad de darse de alta como empresario y darse de baja después de facturar, tantas veces como quiera/necesite. Es decir, nos daremos de alta como empresarios, realizaremos el trabajo, lo facturaremos y nos volveremos a dar de baja.

Nota: Es recomendable darse de baja tan rápido como factures. Sobretodo porque mientras que estés dado de alta tendrás que entregar trimestralmente todos los papeles, aunque en ese trimestre no hayas hecho nada.

A priori parece algo pesado ya que realizar todo el papeleo de empresas para una única factura podría resultar excesivo. Nada más lejos de la realizada, ya que para evitar esto, la administración decidió sacar el modelo 037 o declaración censal simplificada de alta, modificación y baja en el censo de empresarios, profesionales y retenedores, que por unos miseros céntimos te permite hacer todo tipo de facturas.

Lo podrás encontrar en cualquier estanco1, o a través de la web del estado (enlace a la aplicación de la AEAT para crear el PDF del modelo 037 o enlace solo al PDF) el rellenarlo es sumamente fácil (enlace a las instrucciones en PDF del modelo 037) y para cualquier duda siempre podrás contar con la ayuda de la AEAT2.

Para darte de alta solo tendrás que rellenar los siguientes campos.

Nota: Ojo, todos los pasos que voy a indicar aquí puede que no se puedan hacer cuando haces el alta a través de la web, pero fueron los que me rellenaron en Hacienda, así que yo los doy por buenos.

  • De la página 1, marcar las casillas 111 y el 122 y rellenar las casillas 101, 102 y todos los datos de Identificación a excepción del “A8-Nombre comercial” que no deberéis rellenarlo por no necesitarlo.
  • De la página 2, marcar la casilla “600 como Baja” y la casilla “609 Estimación directa simplificada”. Esto nos facilitará la vida a nivel de declaraciones (explicar esto a fondo es más para autónomos o empresas, aquí dejemoslo así). Marcar también el 614 con una X y por último en esta hoja, marcar la casilla “510 como Alta”.
  • De la página 3, marcar la casilla “700 como baja” ya que no tendréis gente a vuestro cargo y pasamos a la sección 6. Declaración de actividades económicas y locales.

Los datos que debes indicar aquí son uno de los más importantes, ya que indicarás la Actividad que vas a desarrollar una vez dado de alta, las opciones que puedes elegir aquí no son pocas precisamente y tendrás seguramente que pedir ayuda para que te aconsejen cual elegir. El listado entero de actividades viene dado en el Epígrafe IAE, lo malo será encontrar un listado completo del mismo. Algúnos enlaces en google. Comentar que los informáticos normalmente vamos a parar al Epígrafe 763 Sección 2º.

Bueno, ya solo te queda firmarlo y entregarlo y podrás facturar. Y una vez entregada la factura tendrás que rellenar el otro modelo 037 para darte de baja. Los campos serían solo:

  • De la página 1, marcar las casillas 111 y el 122 y rellenar las casillas 150, 151 y 152 y ya está. Fácil, no?

Entregarlo y listo! Ya has facturado correctamente!!!

Y por último, detalles importantes a tener en cuenta.

  • Según me comentaron en su día cuando fui a la AEAT a hacer los papeles, si las facturas no son muy grandes no hace falta darse de alta en la SS, el problema es qué entienden por descomunales, claro3. Al no necesitarlo por ser una factura pequeña no me di de alta en la SS, ni les dije nada, por lo que no se que pasos habría que seguir.
  • Esto es solo para casos puntuales, es decir, si tenéis un cliente que os va a facturar dos veces, no pasa nada, pero si vais a facturarle cada mes no valdría y tendríais que daros ya de alta como autónomos (el proceso es similar)
  • Si facturáis a una empresa o autónomo, debéis incluir en la factura la retencón del IRPF, normalemente el 15% en estos casos. El total de la factura debe ser: Base Imponible4 + Base Imponible * 16% IVA – Base Imponible * 15% IRPF. En caso de que no se incluya el IRPF tendréis que declararlo al final del trimestre.
  • Como véis las facturas incluyen IVA e IRPF y lógicamente esto hay que declararlo, se realiza una declaración trimestral y otra anual. En el caso del IRPF solo lo declararemos si se factura a un particular, al cual no podréis deducirle el IRPF en la factura. Pero estos pasos ya los veremos en la tercera y última parte de la seríe “Como facturar sin ser empresario“.
  • Por último, si os pasáis por las oficinas de hacienda a por cualquier papel y estáis ya dados de alta como empresarios, aprovechar para pedir las etiquetas identificativas autoadesivas, no son necesarias pero para los modelos en papel interesa tenerlas

Y para la próxima semana ya nos encargaremos de ver los demás papeleos que hay que hacer para declarar IVA e IRPF

ojo, creo que esto en la web no se puede hacer, pero fue lo que me marcaron a mi en hacienda
  1. Sería bueno que comprases dos modelos 037, ya que la idea es darte de baja tan pronto como realices la factura para evitar cambiar de trimestre
  2. Tanto por teléfono como en persona, conmigo siempre se han portado de forma excepcional, mejor que muchas asesorías
  3. Yo pondría como tope los famosos 3.000 euros de los que hablabamos en el anterior post, pero vamos, preguntar
  4. El total sin IVA, ni IRPF

Como facturar sin ser empresario I: Evitando las leyendas urbanas

Filed in Artículos de EmpresaTags: , , , , ,

Bueno, hace unos meses (más bien un añito largo ya) tuve la ocasión de realizar un trabajo como freelance, cuatro pequeños desarrollos para Asimag, y me encontré con el problema de tener que hacer una factura sin haberme dado de alta como autónomo.

Lo primero que os diré al respecto de las famosas facturas de menos de 3.000 euros es que es falso, como persona física NO puedes hacer ningún tipo de factura sin declararla. O bueno, no del todo falso pero por vuestro bien no lo hagáis. La cuestión aquí radica en que 3.000 euros suele ser el tope mínimo para que Hacienda se moleste en rebuscar en tus datos.

Por ejemplo, un banco tiene obligación de declarar un ingreso en cuenta de más de 3.000 euros. Una empresa, a partir de pagar una o varias facturas a un cliente particular que alcancen dicho límite, se supone, que tiene que avisar también (aunque esto me pilla más como una nebulosa, no lo conozco muy bien y puedo estar equivocado). Y hay alguna otra “alarma” más que salta a estos niveles (creo que la Seguridad Social también pone pegas) y que harán que los señores de negro se molesten en rebuscar en tu basura en busca de incongruencias.

De ahí viene que la gente comente este famoso “tope” para realizar las facturas sin estar dado de alta como autónomo, pensando que si no se sobrepasa, nadie se molestará en buscarte. Nada más lejos de la realidad, en cualquier momento Hacienda puede molestarse en revisar tus ingresos y ver irregularidades que tendrás que pagar y con creces, la diferencia aquí radica en que si te pasas de ese límite las “alarmas” saltarán automáticamente.

Nota: Añadir también que a partir de ahora, según tengo entendido, con el modelo nuevo de IVA las cosas se van a controlar más con respecto a las facturas falsas. Tened en cuenta que estamos en crisis y hay que evitar que se pierda el dinero por todos lados.

Vamos, que de plantearse lo de hacer una factura sin más y mirar para otro lado puede salirnos algo caro y que nadie os asegure lo contrario, si no se declara es completamente ilegal, otra cosa es que nadie se entere.

Pero, entonces ¿estamos perdidos? ¿Hay que hacerse autónomo si o si? Pues no, no hace falta, hay alternativas, formas legales de hacerlo sin ningún problema y sin costes ni excesiva perdida de tiempo a través del alta simplificada en el censo de Empresarios.

Pero esto ya lo comentaré en los siguientes post, que va para largo el asunto.

Nota: Aunque no sea necesario, si es muy muy recomendable que si os váis a meter a “trastear” con Hacienda y la Seguridad Social, os saquéis una firma digital de la casa de moneda y timbre, es fácil conseguirla y en cualquier centro de Hacienda os la podéis hacer, así que si tenéis que pasar por alguno no perdáis la ocasión de haceros la firma digital.

Oenology Archives
Click to view / hide

Oenology Categories
Click to view / hide

Oenology Post Formats
Click to view / hide

 
febrero 2012
L M X J V S D
« nov    
 12345
6789101112
13141516171819
20212223242526
272829  
Positions by Seo-Watcher