jueves, 10 de diciembre de 2009

Excel para crear el fichero del modelo 115 de la AEAT

Bueno continuando con los 2 últimos post sobre el modelo 115 de la AEAT, ahora voy a colgar el Excel con macros incluidas que permitirá obtener el fichero para la presentación telemática a partir del 2010 ya con el tipo de retención del 19% y que se encuentra en este link.

Excel es una herramienta poderosa para el análisis financiero y desde luego se podría llevar la gestión de una Pyme en Excel (incluso montar un “micro-SAP”, pero cuando dimensión del proyecto se hace tan grande es mejor mirar otras alternativas como Visual Studio, por ejemplo. Cuando usas VBA en Excel tienes que programar “muy a la defensiva”, considerando que todo lo que entra un usuario es erróneo hasta que no se demuestre lo contrario y eso es complicado por no disponer de muchos controles como los de validación que ahorran muchas líneas de código. A parte está la molesta “pantalla de bienvenida” informándote sobre la seguridad de las macros y el hecho de no arrastrar bien una fórmula o tener celdas vinculadas a otros libros que puede tener consecuencias desastrosas para los resultados.
Bueno vamos a por la chicha.
Continuando con la empresa MANOLOSA vamos a generar el modelo 115 del 4T del 2009. He explicado la contabilización y repito el asiento contable de la contabilidad de MANOLOSA:

Con el Excel y si no salta ningún error se generaría el fichero que se presentaría a través de la oficina virtual de la AEAT.


Lógicamente todo esto es falso, esa empresa no existe y yo no voy a presentar este modelo con mi certificado de usuario, ya que en Hacienda es posible que no se lo tomen muy bien. Pero si leemos el fichero vemos que no hay ningún problema.

Lógicamente una vez presentado el modelo 115 deberemos declarar lo mismo en el 180 (tenemos hasta finales de enero). No serviría de nada decir en el 115 que durante el año hemos tenido un único perceptor y luego en el 180 declarar 2 perceptores, o errores de no coincidir la suma de las bases imponibles y retenciones declaradas en los 115 con lo que se declara en el 180.

El modelo 115 es bastante irrisorio pero quizás el 303 pueda ser de utilidad para más gente. De hecho sólo hay que seguir el código y atender a que en el modelo 303 pueden haber importes en negativos y el signo – se ha se substituir por una N.
Ejemplo: -300,30 será N0000000030000
Bueno continúo un poco más. Existe la posibilidad de obtener una copia en papel usando los módulos de impresión que se pueden descargar de este link. Lógicamente si hubiera creado un proyecto en VB.NET, hubiera puesto el contenido de los módulos de impresión en la carpeta bin del proyecto para que se copiasen en el lugar de instalación y con la clase Process llamaría a la aplicación MIPF32 pasándole el argumento que necesita.
Por ahora, y de forma "más manual", si tenemos el fichero del M115 y vamos a Inicio --> Ejecutar y entonces escribimos cmd aparecerá:

Antes he descomprimido el contenido de los módulos de impresión en C:\ y se ha creado una carpeta llamada REDISTRIBUIR. Pues bien escribo cd\ para ir a C:\
Después cd REDISTRIBUIR para ir a la carpeta REDISTRIBUIR y entonces MIPF32 /E:”C:\REDISTRIBUIR\00000000T.TXT” y por la impresora por defecto os aparecerá la copia en papel (en este caso lo imprimo en pdf a través del CutePDF Writer).

Para la confección del Excel he adaptado el código de validación de una c.c. disponible aquí, y así el Excel es más real y me consigo que me rechace los códigos de cuenta no válidos"

En próximos post, voy a volver al mundo .NET y lo primero de lo que voy a hablar es sobre LINQ donde enseñaré como crear una tabla maestro-detalle usando LINQ.

domingo, 15 de noviembre de 2009

Escribir y leer archivos .txt usando VBA en Excel

Buenas,
hoy voy a continuar con el post anterior, pero sin tanta contabilidad ni fiscalidad. Este será la primera de 2 entradas donde voy a explicar cómo obtener “el ficherito” para la presentación telemática del modelo 115 a través de la página de la AEAT. En la segunda entrega colgaré el archivo Excel que genera el fichero, pero por ahora me entraré en explicar cómo se escribe y se lee de archivos .txt en Visual Basic 6, cosa que se ha de dominar para entender el meollo de la cuestión.

  • A modo de esquema, éste es el código para crear y/o escribir en un archivo:
    Open [ruta_archivo] For Output As #1
    Print #1, [texto o nombre_variable]
    Close
    #1

  • Para la lectura:
    Open [ruta_archivo] For Input As #1
    Line Input #1, [nombre_variable]
    Close
    #1

Ya sé que cualquier programa de contabilidad mínimamente decente, como A3 o Logic y hasta ERPs más sofisticados como Microsoft Dynamics o SAP -siempre que ésto haya sido desarrollado ya que vale pasta-, generan estos ficheros, ya que sólo tienen que hacer una consulta a sus respectivas bases de datos y obtener como resultado la cadena de texto con el formato que se requiere por la AEAT.
De lo que se trata es abrir los ojos a la creación de ficheros, ya sean .txt o .xml, que nos permitan automatizar procesos contables. Lógicamente Excel no es el mejor entorno para crear aplicaciones de este tipo y desaconsejaría usar ésto en producción al menos que se tratase de la última alternativa. Creando una aplicación Windows usando Visual Studio se tendría una interfaz mucho más desarrollada, la implementación sería más sencilla y el mantenimiento del código sería más fácil. Pero con esto quiero demostrar que con Excel también se puede hacer.

En nuevas entregas desarrollaré el modelo 202 de pago fraccionado sobre impuesto sobre sociedades creando una aplicación Windows en Visual Studio y es posible que más adelante cree un Sitio Web ASP.NET y mostraré como publicarlo en el IIS.
Pues bien éste es el link al Excel y aquí pongo el vídeo donde explico paso a paso los pasos:

Crear y leer archivos de texto en Excel usando VBA (Spanish) from Raúl González on Vimeo.

sábado, 31 de octubre de 2009

Retenciones de alquileres desde un punto de vista contable

Hola, hoy voy a explicar el tema de la retención del 18% sobre rentas del alquiler. Para ello voy a poner el caso de una empresa ficticia llamada MANOLOSA que necesita un local para su oficina y lo alquila a una persona física llamada Raúl González (también podría ser una persona jurídica llamada Raúl S.A. y el ejemplo sería igual, con la única diferencia que RAÚL S.A. tributará en el Impuesto sobre Sociedades mientras que Raúl González rellenará el apartado Actividades Empresariales y Profesionales del IRPF).

A Raúl González no le tendrían que retener si se cumplen las 3 condiciones:

  1. El valor catastral total de los inmuebles arrendados supera los 601.012,10 €.
  2. Su actividad está en el grupo 861 del IAE.
  3. Si fuera una empresa, cosa que no ocurre, y su cifra de negocios superase el millón de euros pagará IAE y no habrá problemas. Pero si está exenta del pago del IAE, por ser persona física o no superar el millón de euros, tendría que aportar otra documentación a Hacienda como escrituras, recibos del IBI y contratos de alquiler.

Si es así, Raúl González ya está tardando en ir a Hacienda a por un certificado que se lo presentaría a MANOLOSA para que no le retenga -pero como este ejemplo es más falso que als facturas del Palau de la Música no pasa nada-.

Pues bien, para el ejemplo la factura del alquiler del mes de Noviembre del 2009 sería la siguiente:
Y con esta factura el asiento contable en la contabilidad de MANOLOSA será este de aquí:
Y 256,49 € será el importe será el importe que pagará MANOLOSA cuando presente el modelo 115 del 4T del 2009 el día 20 de enero del 2010, si no hay más facturas en el período que va de octubre a diciembre. Y por supuesto el día 30 de enero del 2010 presentará a Hacienda el modelo 180 de resumen anual. Aquí pongo como quedaría el modelo 180 suponiendo que no hay más facturas, cosa rara.

Éste será el asiento que aparecerá en la contabilidad de Raúl González persona física:
La cuenta 473.0 recogerá el saldo de las retenciones a favor de Raúl González.
Una vez MANOLOSA presente el modelo 180 emitirá a Raúl González un certificado de retenciones que le servirá para confeccionar su renta. Este certificado se puede imprimir de la Plataforma Informativas de la AEAT que se puede descargar desde aquí.
Para preparar este ejemplo he utilizado la demo del A3CON disponible en el siguiente link.
Pues bien aquí pongo un esquema sobre el alquiler analizando los diferentes casos:

Pues bien como este blog es también de programación y continuando con el ejemplo, en siguientes entradas la voy a liar parda y publicaré un Excel que generará el fichero .txt para la presentación del modelo 115 y con esto recordaré como se escribía y leía de ficheros en Visual Basic 6, cosa que en .NET es diferente y para mí mucho mejor, pero como por ahora el Excel no entiende de .NET ni de System.IO habrá que hacer memoria a refrescar viejos apuntes de programación.

sábado, 24 de octubre de 2009

Ubuntu en Windows XP con VirtualBox

Hola de nuevo, hoy voy a explicar cómo ejecutar Ubuntu en equipo en el que se está ejecutando Windows XP. Para ello me voy a servir de VirtualBox, una aplicación absolutamente gratuita y que se puede descargar del siguiente link.

Con VirtualBox o con VMware (WorkStation o Server) entramos en el tema de moda de los últimos meses: la virtualización. Puedo tener un sistema operativo instalado en mi ordenador y mediante VirtualBox puedo arrancar otro dentro de él con aplicaciones específicas instaladas. Por ejemplo, el caso de tener instalado Ubuntu y arrancar una máquina virtual en la está instalado Visual Studio en el sistema operativo Windows Server 2008. El problema: más vale tener un ordenador “decente” si no quieres problemas a la hora de no tener memoria RAM suficiente, ya que habrán 2 sistemas operativos corriendo a la vez en tu mismo ordenador.
Las posibilidades son infinitas, de hecho en un post anterior expliqué cómo poder en Windows XP trabajar con una máquina virtual en la que viene configurado el SAP Netweaver Trial Edition en el SO Suse Linux. Pues bien ahora lo que voy a hacer es no descargarme los archivos que componen la máquina virtual, sino que voy a crear una desde 0.

A nivel empresarial, esto puede ser un filón, ya que muchas empresas preferirán gastarse el dinero en adquirir potentes servidores y poder a través de ellos administrar la red de forma más fácil: que hay una nueva persona en la organización, pues se clona una máquina virtual creada a tal efecto con todo ya instalado de serie y ya está, que otra necesita un disco duro más grande para almacenar más archivos pues se le da. Habrá una reducción en los costes de administración de la red, ya que ahora ya no habrá que ir ordenador por ordenador viendo si todos los programas funcionan correctamente, si hay que dar permisos de administrador a alguien sobre determinadas carpetas, si un departamento necesita tener instalado tal programa en exclusividad, … Y también en los costes de compra de nuevos terminales para los usuarios finales, ya que no tendrán que ser tan potentes ni con el hardware más avanzado para poder ejecutar aplicaciones que consuman muchos recursos, debido a que las aplicaciones se ejecutarán en el servidor y todos los datos estarán en el servidor.


Si quieres saber de este tema más aquí pongo el
link a un vídeo (in English!) donde se explica, con una presentación más típica de la teletienda, como funciona VMware Infrastructure.


Pues bien en el siguiente vídeo no voy a tratar temas de virtualización servidores y me voy a centrar a explicar como crear una máquina virtual con el SO ubuntu usando VirtualBox:

sábado, 17 de octubre de 2009

Ajax Control Toolkit en VS 2008

Si trabajamos con aplicaciones ASP.NET en Visual Studio y miramos en el cuadro de herramientas el tag (o pestaña) de Extensiones AJAX veremos que hay muy pocos controles, sólo 5. Pero no pasa nada ya que para eso tenemos el AJAX Control Toolkit que son sobre unos 30 controles, desarrollados conjuntamente por Microsoft y por la comunidad de programadores, que nos permitirán crear páginas web más profesionales aumentando la funcionalidad de los típicos controles de ASP.NET. Posiblemente en el Visual Studio 2010 estos controles ya se instalen por defecto en el proceso de instalación, pero por ahora Microsoft se ha querido curar en salud y dejar que la comunidad los pruebe y los desarrolle y, lo más importante, que se encuentren los posibles bugs antes que anticiparse a incluirlos sin testearlos lo suficiente. El Ajax Control Toolkit se puede descargar en la página de codeplex.com, donde además se pueden encontrar un montón de proyectos de código abierto interesantes que se pueden cuchichear para ir aprendiendo.

Pues bien éste será el contenido del siguiente vídeo:



viernes, 25 de septiembre de 2009

Listado de gastos de viaje con VBA en Excel 2007

Pues en este segundo ejemplo de la saga voy a crear un formulario que me permita elaborar un pequeño listado con los gastos de viaje de cada uno de los empleados de una empresa ficticia.
Para las personas que conozcan un poco el IRPF a esto se les llama gastos de locomoción y de manutención y estancia y las empresas están obligadas a llevar un control de estos gastos. Cuando la empresa page el gasto en el que incurre el trabajador estará obligada a retenerle o no en función de si ese gasto es renta del trabajo personal dineraria para el trabajador o está exonerado de tributación. Estos gastos pueden ser exonerados de gravamen (no tributan en el IRPF del trabajador y la empresa no ha de retenerle) según su cuantía y justificación y para ello hay que ir a la Ley del IRPF para ver las condiciones y los límites.

Sin ánimo de meterme en el terreno fiscal, éste es sólo un ejemplo sencillo y básicamente para enseñar la capacidad que tiene VBA para crear soluciones empresariales para el tratamiento de los datos que puede ser muy útil para muchas empresas.
Lógicamente se podría hacer un ejemplo más elaborado usando Visual Basic .NET y utilizando una base de datos SQL, pero todo a su debido tiempo. Lo que caracteriza VBA es su sencilla facilidad de uso que hace que a las pocas horas todo el mundo sepa utilizarlo y sacarle partido y a parte si se entiende bien es un buen trampolín a otros lenguajes de programación superiores en cuanto a complejidad.
Voy a colgar el libro Excel con el ejercicio en cuestión por si alguien lo quiere a efectos didácticos ya que el tutorial es un poco largo y puede ser difícil de seguir. Aquí pongo el link.

Crear un formulario en Excel usando VBA (Spanish) from Raúl González on Vimeo.

lunes, 21 de septiembre de 2009

Visual Basic for Applications usando Excel 2007

Hola de nuevo.
Hoy voy a escribir en el blog un poco sobre VBA (Visual Basic for Applications) y voy a colgar el primero de los 2 vídeos en el que voy a trabajar un poco con VBA en Excel.
El editor de Visual Basic del Office es uno de los pocos lugares en los que todavía queda el lenguaje de programación Visual Basic 6, ya que prácticamente todo se hace con .NET y es posible que en próximas versiones ya se tenga que programar usando el Visual Studio como ya ocurre en otros productos de Microsoft como Expression Blend. Por mí mejor, ya que todo y que mis inicios fueron en Visual Basic 6 (carrera de Económicas y los créditos de libre elección que tanto necesitaba para acabarla :) prefiero usar .NET ya que las posibilidades son infinitas y así le saco más rendimiento al Máster por el mismo precio, jeje.
Programar con el editor de Visual Basic tiene muchas ventajas, sobre todo si se trabaja en un departamento financiero/contable donde Excel es el pan nuestro de cada día. El problema es que no ha tenido mucha aceptación debido a varios problemas:

  1. Cuando abres un archivo con macros te sale una bonita pantalla de bienvenida en la que se te advierte que las macros pueden tener virus, troyanos,… y eso espanta al personal (sólo les faltaba decir que te puede aparecer Risto Mejide). Lógicamente ante tal advertencia la gente ha asociado macros a problemas de seguridad y eso es falso.

  2. Hay gente que considera que grabar una macro es igual a programar, pero al grabar una macro el código que se genera a veces puede ser muy ineficiente, ya que se graba todo, no se crean bucles ni otras estructuras de control como condicionales ni tampoco formularios.

Pues esto es lo que voy a hacer. Voy a crear un formulario con varios controles y voy a llamarlo desde un botón en Excel.