Podremos contabilizar analíticamente aquellos pequeños gastos para los que no registramos factura (como comisiones bancarias).
Una vez instalado el módulo (disponible en los extra-addons de OpenERP), nos aparecerá una nueva columna (“Cuenta Analítica”), que nos permitirá seleccionar la cuenta a la que queremos imputar la el gasto/ingreso:
“Artículo 79. Impuesto sobre el Valor Añadido.
Con efectos desde el 1 de julio de 2010 y vigencia indefinida, se introducen las siguientes modificaciones en la Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido.
Uno. Se modifica el apartado uno del artículo 90, que queda redactado de la siguiente forma:
«Uno. El Impuesto se exigirá al tipo del 18 por ciento, salvo lo dispuesto en el artículo siguiente.»
El resto del artículo queda con el mismo contenido.
Dos. Se modifica el encabezado del apartado uno del artículo 91, que queda redactado de la siguiente forma:
«Uno. Se aplicará el tipo del 8 por ciento a las operaciones siguientes:»
El resto del apartado y artículo quedan con el mismo contenido.“
“El software libre (en inglés free software, esta denominación también se confunde a veces con gratis por el doble sentido del inglés free en castellano); Ey, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente.
Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.”
No centraremos en detalle de licencias, diferencias, discusiones de la definición, etc.: hay mucho escrito a lo “largo y ancho” de internet respecto al tema.
En resumen:
Tanto la herramienta como el código que “la hace funcionar” están a disposición del público. Independientemente de su naturaleza, las empresas que desarrollamos e implementamos software lo único que hacemos es ofrecer soluciones a los problemas que nuestros clientes nos plantean, con diferencias si dichas soluciones son propietarias o libres:
Las soluciones propietarias requieren que en la mayoría de los casos seas tú el que se adapte a su solución: el Software Propietario A soluciona los problemas X, Y y Z. Si quieres que solucione X’, Y’ o Z’, los costes de la modificación te van a salir realmente caros (normalmente) o puede que tengas que esperar a una versión posterior, que tendrás que migrar y pagar.
Si realmente tus problemas son X, Y y Z, y si no son realmente muy específicos y complejos, seguramente la alternativa de software libre sea mucho más barata, ya que no existen costes de licencias, ni de uso, ni por puesto, etc. y ofrece el mismo rendimiento y garantías.
Las implantaciones de software propietario te hacen cautivos de la herramienta y de la compañía detrás de la misma. Si dicha compañía desaparece, es adquirida por otra compañía con un producto similar y extinguen tu producto, realmente tienes un problema. En cambio, con un software libre y como su propio nombre indica, la libertad es absoluta.
Las comunidades de software libre detrás de las herramientas, son realmente transparentes. Un producto puede ser totalmente llevado por la comunidad, o normalmente existe un tercero (normalmente el creador) que se encarga de su control y guía el desarrollo del mismo. Es decir, máxima garantía en todos los aspectos.
Conclusiones:
La experiencia nos dice que la mayoría de las empresas buscan la practicidad funcional en la elección del software.
De hecho, independientemente de si es libre o no, y pesan otras variables, normalmente económicas.
Como hemos comentado anteriormente; la total flexibilidad de la solución; el coste menor (normalmente) y el pronto retorno de la inversión suelen ser las principales bazas ganadoras del software libre. Pero por supuesto, esto sólo es posible si la empresa implantadora ofrece total confianza y experiencia en la solución elegida.
Además le adjuntamos el enlace a nuestra web, dónde podrá encontrar más información, haciendo clic aquí.
En este post voy a mostrar como realizar un Scriptlet y usarlo en iReports.
A continuación, veremos lo fácil que es filtrar y transformar esos datos si conoces el lenguaje, si usas ellenguaje xPath para filtrar o transformar esos datos es necesario usar Scriptlets.
Un Scriptlet para Jasper Reports es una clase Java que hereda de JRDefaultScriptlet, los métodos que creemos en esta clase estarán disponibles para usarlos en nuestro informe.
Primer paso
Empezaremos explicando, que hay que hacer para crear este Scriptlet de ejemplo vamos a crear un fichero llamado CalendarioScriptlet.java en un directorio llamado calendario, con dos métodos, uno que dice el día de la semana en el que cae el día uno de un mes y el otro método dice el número de días que tiene un mes.
Este es el código:
package calendario;
import net.sf.jasperreports.engine.JRAbstractScriptlet;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
import java.util.*;
public class CalendarioScriptlet extends JRDefaultScriptlet {
public Integer primerDiaMes(String mes, String anno) throws JRScriptletException{
Calendar cal = new GregorianCalendar();
cal.set(Integer.parseInt(anno), Integer.parseInt(mes)-1, 1);
int num = cal.get(Calendar.DAY_OF_WEEK );
return num;
}
public Integer numeroDiaMes(String mes, String anno) throws JRScriptletException{
Calendar cal = new GregorianCalendar();
cal.set(Integer.parseInt(anno), Integer.parseInt(mes)-1, 1);
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DATE, -1);
int num = cal.get(Calendar.DAY_OF_MONTH );
return num;
}
}
Segundo paso
En segundo lugar, esta es la clase que hemos creado para usar en nuestro informe, para poder usarlo tenemos que compilar el java. Para poder compilar el scriptlet tienes que tener las librerías de jasperreports, puedes descargarlo desde aquí, busca el .jar.
Tercer paso
Si nos situamos en el directorio padre del directorio calendario en el que esta CalendarioScriptlet.java, y tienes la librería de jasper en /home/usuario/report/jasperreports-3.7.2.jar puedes compilar así:
y puedes crear la librería .jar de tu Scriptlet así:
jar cf calendarioScriptlet.jar calendario/CalendarioScriptlet.class
Con esto tenemos calendarioScriptlet.jar.
Cuarto paso:
A continuación, vamos a ver lo que tenemos que hacer en iReport para poder usar el Scriptlet. Primero vamos a las propiedades del informe.
Aquí tenemos que asegurarnos que el lenguaje es Java y poner la clase del Scriptlet.
Y en el campo import poner también el nombre de la clase.
Quinto paso:
Ahora vamos a Herramientas>Opciones para añadir al classpath nuestra librería, para poder ejecutarlo en iReport. Podemos añadir al classpath directamente calendarioScriptlet.jar o el directorio que lo contiene, si queremos ejecutar el informe desde otro programa tendremos que copiar la librería al PATH del sistema o copiarla junto con el resto de las librerías.
De esta manera, con esto ya podemos usar las clases de nuestro Scriptlet en el informe, podemos usarlo por ejemplo en un field, teniendo en cuenta que el tipo de dato que devuelve sea el mismo que el tipo de dato del field o haciendo algún tipo de casting. O incluso, podemos usarlo para filtrar los datos, clickando el botón “Filter expression…” en la ventana de la consulta del informe.
Para llamar a un método de nuestra clase tenemos que llamarla sobre el parámetro $P{REPORT_SCRIPTLET}, por ejemplo para conocer el número de días de el mes de febrero del año 2010 lo podemos hacer así: $P{REPORT_SCRIPTLET}.numeroDiaMes("2","2010")
Resumen:
Para concluir, con esto hemos visto como crear y usar un Scriptlets en iReports, este Scriptlet en concreto lo he creado para realizar un informe tipo calendario así que pronto subiré otro post con la explicación del informe y el ejemplo de como usar este Scriptlet.
La herramienta que genera la documentación es sphinx, esta herramienta permite generar la documentación en formato html y en Latex para generar los pdf, usar etiquetas, crear indices… tienes mas información en su pagina.
Para instalar sphinx en Ubuntu: sudo easy_install sphinx
Para poder generar la documentación hace falta instalar algunas dependencias para generar los documentos Latex y convertir las imágenes: # Instalar Latex extras
sudo apt-get install texlive-latex-extra texlive-fonts-recommended
# Instalar ImageMagick para convertir imágenes
sudo apt-get install imagemagick
Ahora que tenemos sphinx instalado vamos a descargar el código de la documentación como vimos en el post anterior bzr branch lp:openobject-doc
Al descargar el código se crea un directorio openobject-doc y dentro de este nos interesan los siguientes directorios
books: con los libros
build: en este se genera la documentación en html y en pdf
i18n: con las plantillas para los diferentes idiomas
source: con el código de la documentación original
Para generar la documentación original en ingles nos situamos en el directorio openobject-doc y hacemos lo siguiente:
#Para generarla en html:
make clean
make html
#Para generarla en pdf:
make clean
make latex
cd build/latex
make all-pdf
Con esto hemos generado la documentación que tiene el código en la carpeta source, estos son book, user-trainning..
Para generar la documentación que se encuentra en el directorio book, puedes hacerlo así cd books/book_mrp
make clean
make latex
cd build/latex
make all-pdf
Con esto hemos visto como generar la documentación original en html y en pdf, ahora vamos a ver como se hacen las traducciones. Dentro del directorio i18n se encuentran los directorios de las plantillas de cada idioma, la de español ya esta creada, si se quisiese crear otro directorio para otro idioma se puede hacer ejecutando make i18n LANG=xx
con esto se crea el directorio openobject-doc/i18n/xx, donde xx indica el idioma en el que vamos a traducir las plantillas.
Las plantillas de la documentación para la documentación en español están en el directorio openobject-doc/i18n/es, para generar la documentación en español se hace igual que hemos explicado antes para la original en ingles pero desde este directorio.
Los ficheros con extensión rst son las plantillas que tenemos que traducir, estos ficheros tienen una serie de lineas que empiezan con la etiqueta –i18n: que son las lineas originales de la traducción y seguido de estas lineas tiene que aparecer la traducción, cuando se han generado las plantillas de la traducción estas lineas aparecen también en ingles.
Por ejemplo este es un fragmento del fichero openobject-doc/i18n/es/source/book/0/index.rst antes de traducirlo: .. i18n: The Open ERP Solution
.. i18n: =====================
The Open ERP Solution
=====================
.. i18n: Because of its modularity, collaborative developments in Open ERP have been cleanly integrated,
.. i18n: enabling any company to choose from a large list of available functions.
.. i18n: As with most open source software, accessibility, flexibility, and simplicity are important keywords
.. i18n: for development.
.. i18n: Experience has shown that there’s no need to train users for several months on the system,
.. i18n: because they can just download it and use it directly.
Because of its modularity, collaborative developments in Open ERP have been cleanly integrated,
enabling any company to choose from a large list of available functions.
As with most open source software, accessibility, flexibility, and simplicity are important keywords
for development.
Experience has shown that there’s no need to train users for several months on the system,
because they can just download it and use it directly.
Así se quedaría después de traducirlo: .. i18n: The Open ERP Solution
.. i18n: =====================
La solución Open ERP
=====================
.. i18n: Because of its modularity, collaborative developments in Open ERP have been cleanly integrated,
.. i18n: enabling any company to choose from a large list of available functions.
.. i18n: As with most open source software, accessibility, flexibility, and simplicity are important keywords
.. i18n: for development.
.. i18n: Experience has shown that there’s no need to train users for several months on the system,
.. i18n: because they can just download it and use it directly.
Debido a su modularidad, el desarrollo colaborativo en Open ERP ha sido limpiamente integrado,
permitiendo a cualquier empresa a elegir entre una larga lista de funciones disponibles.
Como con la mayoría del software de código abierto, la accesibilidad, flexibilidad y simplicidad son las palabras clave
para el desarrollo.
La experiencia ha demostrado que no hay necesidad de formar a los usuarios durante varios meses en el sistema,
porque Open ERP esta disponible para descargarlo y utilizarlo directamente.
También hay que tener en cuenta que sphinx permite crear el indice de la documentación, vinculos, encabezados, salto de paginas, ect, asi que habrá etiquetas que normalmente comiencen con .., lineas de * o lineas de -, que deberán mantenerse para no perder el formato o el vinculo.
El impuesto tipo canon en Openerp, tiene como unidad de medida por defecto la célula para aplicar la tasa y como medida de venta la batería.
Lo primero creo el impuesto de tipo fijo, el canon se aplicará a cada cd.
Creo las medidas Unidad y Tarrina en una nueva categoría de medida que he llamado CD.
Creo el producto CD, con unidad por defecto Unidad y unidad de venta Tarrina con ratio de conversión 1/25 = 0,04.
Ahora si creo un pedido, al crear la linea puedo poner en la unidad de venta Tarrina y cantidad 1 y automaticamente si unidad por defecto es Unidad se pone la cantidad a 25.
También puedo crear lineas con unidad de venta Unidad, en este caso la Unidad que indico en la unidad de venta es la de la categoría que he creado. Pero he tenido que forzar que coja como valor 1.
Si hago click en el botón de calcular impuestos, me calcula los impuestos sobre los 26 CDs (25 de la tarrina y uno suelto).
Al imprimir el pedido si que sale las unidades de venta.
Se podría cambiar el informe para que la impresión del precio unitario tuviese en cuenta la unidad de venta,
Y por último, se podría modificar la ventana de pedidos para mostrar la unidad de venta.
A continuación le mostramos paso a paso, un tutorial para saber el modelo necesario con el que realizar el informe que busca con OpenERP.
Muy sencillo, simplemente entra en el cliente web de la aplicación logeandote como admin, entra en la ventana en la que quieres meter el informe y en la zona inferior a la izquierda clicka sobre
[PERSONALIZAR]>PERSONALIZAR OBJETO
Esto abre una ventana emergente con la información del objeto, en este caso estamos en la factura y el objeto es account.invoice
Ahora si quiero iterar sobre las lineas de la factura buscando entre los campos de este objeto vemos que hay uno etiquetado como “Invoice Lines”, y el nombre del campo es invoice_line.
Como último consejo entra en el sistema en ingles y abre la ventana en modo formulario, así será mas fácil relacionar los campos del formulario con los del modelo.
La semana pasada estuve en Bilbao en las jordanas estatales de OpenERP y me quede impresionado con el funcionamiento de la comunidad. Como hace tiempo que estoy dándole vueltas a la documentación y pensando en traducirla he decidido que lo primero con lo que voy a empezar a colaborar es con la traducción de la documentación. Las herramientas necesarias para colaborar con OpenERP son Launchpad y Bazaar, vamos a ver que son y como se utilizan si queremos descargar código (en este caso será el código de la documentación), modificarlo y volverlo a subir para que este disponible para la comunidad.
Según la wikipedia “Launchpad es una aplicación web y un sitio web que apoya el desarrollo de software, en particular el de software libre. Está desarrollada y mantenida por Canonical Ltd..”, puedes ver el articulo completo aqui. Launchpad da soporte para compartir código y controlar versiones, reportar errores (Bugs), sugerir modificaciones y nuevas funcionalidades (blueprints), crear traducciones y para dar respuestas a preguntas de la comunidad. La herramienta que permite compartir el código y controlar versiones es Bazaar, luego veremos como funciona.
Para poder colaborar en cualquier proyecto alojado en Launchpad tendremos que registrarnos en la web de Launchpad. Una vez tengas tu cuenta en launchpad puedes unirte al grupo openerp-community. No es necesario unirse a ningún grupo para descargarte el código, pero si para subir modificaciones.
Bazaar es la herramienta que permite descargar el código y controlar las versiones a la hora de subirlo. Puedes ver mas en Bazaar en cinco minutos. Para instalar bazaar en ubuntu 9.10 hacer lo siguiente:
Dependiendo de la versión necesaria para usar bzr es conveniente instalarlo desde su repositorio
echo 'deb http://ppa.launchpad.net/bzr/ubuntu karmic main' | sudo tee -a /etc/apt/sources.list
apt-get update
Una vez añadido al repositorio se puede instalar asi
apt-get install bzr
para instalarlo en otra versión de ubuntu simplemente cambia el nombre de la versión al añadir los repositorios, y para otro sistema operativo puedes ver la guía aquí.
La idea es la siguiente, el código compartido en bazaar se organiza en ramas o branches, por ejemplo el proyecto openerp-server tiene una rama llamada trunk para el código en desarrollo, y una rama 5.0 para la versión estable. Así que si queremos descargarnos la versión estable de openerp-server podemos hacer:
bzr brach lp:openobject-server/5.0
y para descargarnos el código de la documentación:
bzr branch lp:openobject-doc
con esto se nos crea un directorio llamado openobject-doc que contendrá el código de la documentación. En el próximo post explicare la estructura del código de la documentación y como se crean las traducciones.
Bazaar es una herramienta distribuida de control de versiones así que lo que hemos hecho realmente al descargar el código es crear una rama en nuestro repositorio local, si modificamos el código antes de subirlo tendremos que sincronizar nuestra rama con la original, obtendremos los cambios realizados desde que descargamos el código o desde la última revisión que hicimos y lo sincronizaremos con nuestra rama local.
Para poder publicar nuestro código con Bazaar primero tendremos que identificarnos, por un lado nos identificaremos con nuestro usuario de Launchpad:
bzr launchpad-login nombre_usuario_launchpad
la primera vez que lo ejecutemos se creara el fichero /home/angelmoya/.bazaar/authentication.conf con la información de nuestro usuario.
Por otro lado tenemos que identificar nuestro equipo con la clave ssh key, para conseguir nuestra clave ssh key en ubuntu lo haremos así:
#Instala OpenSSH
sudo apt-get install openssh-client
#Genera la clave
ssh-keygen -t rsa
# - Presiona intro para aceptar el nombre por defecto
# - Introduce la contraseña
Con esto se genera en el directorio /home/usuario/.ssh/ una pareja de claves, id_rsa la clave privada y id_rsa.pub la clave publica. La clave privada se quedara en tu equipo y la publica hay que subirla a tu perfil de launchpad. Logeate en Launchpad.net con tu usuario y accede a tu página para editar la información de SSH keys.
Copia en esa ventana la información que hay dentro del fichero /home/usuario/.ssh/id_rsa.pub y clicka el botón Import Public Key para terminar.
Con esto ya tienes tu equipo preparado para subir modificaciones del código. Si te has descargado el código del proyecto openobject-doc y has realizado alguna modificación, ve al directorio de openobject-doc y haz lo siguiente:
Sincronizamos nuestros cambios con los que se han realizado en openobject-doc desde la ultima sincronización
bzr merge
Hacemos un commit para indicar los cambios que hemos realizado
bzr ci -m "[TAG] Mensaje explicando cambios hechos"
Por último subimos los cambios
bzr push
Para mas información puedes consultar aquí.
Por último, cuando realices el commit, según se indica la documentación de Open ERP aquí sobre como subir tus modificaciones, en el mensaje hay que indicar que tipo de modificación has realizado, esto se indica con el [TAG] las diferentes opciones son:
[IMP]: Mejoras
[FIX]: Corrección de errores
[REF]: Refactorizar, modificar el código sin cambiar la funcionalidad
[ADD]: Añadir fuentes
[REM]: Eliminar fuentes
Con esto ya hemos visto como trabajar con Launchpad y Bazaar, en el siguiente post veremos como trabajar en la traducción.
A continuación, les mostramos las presentaciones usadas en las conferencias de las III Jornadas de OpenERP 2010.
Recordar que se realizaron los días, 13 y 14 de Mayo de 2010 en la Universidad Deusto de Bilbao.
Ya están subidas las presentaciones y material auxiliar usado por Pexego, de las conferencias de las III Jornadas de OpenERP 2010 realizadas los días 13 y 14 de Mayo de 2010 en la Universidad Deusto de Bilbao.