lunes, 28 de octubre de 2013

New Home to Zoook-eSale Project


Zoook is e-commerce OpenERP App without connector, is developed in Python with Django framework, and is 100% compatible and designed to work with OpenERP.

Zoook e-Sale was originally developed by Zikzakmedia, and currently is unmaintained. This is an unofficial fork developed by Enterprise Objects Consulting, fully functional, with active development, free and open source, and with commercial support too.


The original project of ZZ works with OpenERP version 6.0, and does not come with all the source code. When we started the project more than a year ago, we complete all the missing code, fix and improve a lot of features, and make it work with the latest version at this time, so we migrated the modules and the dependencies to the version 6.1, and also moved the Django code to version 1.4

First we pushed all the code in a Github fork, but now all the sources was moved to Launchpad to align with the OpenERP practices, and we published the modules in OpenERP Apps.

Today is an ecommerce fully functional and stable. It is still an e-commerce system very small compared with other systems such as Magento or Prestashop, but that's what makes great Zoook: it's extremely easy for OpenERP developers to implement and extend it, as it's written in the same language, has an extremely compact code, and executes all business operations directly in OpenERP via webservices.

It's not only a shopping cart system, can be used as developement framework to construct any web application integrated with OpenERP.

I was working these weeks in the new site where all the code reside, the installation guide, and also I created a repository with all dependencies of third party modules. The project are in https://launchpad.net/zoook-esale.

I hope collaborators will join to the project, a lot of improvements still to be done. And maybe the main task is migrate the modules to latest OpenERP, now the version 7.0.

miércoles, 16 de octubre de 2013

Re-deploy Plugin Ext en Liferay con Tomcat


Para deployar por primera vez un Plugin-Ext en Liferay corriendo sobre un Tomcat basta con deployarlo en "caliente" sobre la carpeta deploy/ y restartear, pero luego de la primera vez este método ya no funciona.

Esta es la forma "oficial" para la versión 6.x, aunque no bien documentada en Liferay.com.

Requerimientos:


  • Tener el Plugin Ext que queremos deployar empaquetado en formato .war
  • Tener todos los .war de todos los portlets deployados en nuestra instancia de Liferay.
  • Tener el "unbundled Liferay web application", se puede descarcar desde la página Additional Files, sección "Download WARs". Lo descargamos y renombramos a ROOT.war.
  • Hacer un backup ! Nunca hagas un deploy, y menos de un Ext, sin haber echo un backup tanto de la BBDD, como de la carpeta donde está Liferay instalado.


Pasos:


  1. Shutdown de la instancia
  2. Borrar del Tomcat webapps/*, work/* y temp/*. También lib/ext/*-ext*.jar
  3. Copiar en webapps/ el empaquetado de Liferay ROOT.war, y todos los .war de los portlets y themes en deploy/, excepto el Plugin Ext
  4. Startup de la instancia
  5. Luego de que arrancó y deployó, copiar el war del Ext en la carpeta deploy/
  6. Esperar a que termine el proceso de deploy (ver el log). Shutdown
  7. Copiar los .war de todos los plugins excepto los plugins Ext en deploy/nuevamente
  8. Startup


Otra manera que puede resultar más rápido, pero que no garantiza el redeploy en todos los casos (aparentemente no redeploya bien en los casos en que se cambian desde el Ext archivos JavaScript):
http://www.liferay.com/de/community/wiki/-/wiki/Main/Ext+Plugin

jueves, 10 de octubre de 2013

PyDev Error "Source not found" in projects with external contents

When you create a new PyDev project (Python project) in Eclipse, and the source content comes from another folder (not in the workplace), you must be uncheck the "Use default" in the creation wizard, ant put the path in the "Directory" folder.

In some case, after create the project, we get the error "Source folder: /XXX not found", where the XXX is the name of the container folder. The error is showed like this in the PyDev Package Explorer view:



And as you can see, the package structure of the project is not recognized (are displayed as simple folders).

To solve the problem, only you need to edit the hidden file .pydevproject created by Eclipse to store the project configuration (is visible in the Navigator view), and change the value of the tag <path>. The wrong value is:

    <path>/${PROJECT_DIR_NAME}</path>

You must be change to:

    <path>/real_name_of_the_project</path>

In my case:

    <path>/zoook-addons-trunk</path>

After save, the project looks like this:



Now the error in gone, and the package structure in the project are recognized by PyDev.


miércoles, 2 de octubre de 2013

Operaciones avanzadas con SVN en Eclipse Subversive

Subversion (SVN), es aún hoy el sistema de control de versiones más popular, sobre todo para almacenar proyectos privados desarrollados internamente o por empresas de IT.

En cambio en proyectos grandes y open source se extienden cada vez más los sistemas distribuídos, como Git, Mercurial o Bazaar.

La clave del éxito de SVN es su simplicidad de uso y administración, al ser un sistema centralizado, y que se basó en los aciertos y corrigió los errores de su antesesor CVS.

Hace unos años trabajé en una empresa en la que usabamos SVN, y trabajabamos codo a codo con los diseñadores gráficos, además de programadores juniors, que debían aprender a usar la herramienta. Me encomendaron escribir un manual con los conceptos más complicados, e impartir unas charlas explicativas. Aquí comparto en este post ese viejo manual (3 años en sistemas es mucho :S), en el que colaboraron en su elaboración también Sebastián Facchini y Heraldo Rodríguez.

En la actualidad hay dos plugins de uso extendido para trabajar con SVN en Eclipse: Subversive (oficial de Eclipse) y Subclipse (oficial de los creadores de Subversion). Este manual trata sobre el primero, aunque sorprende lo similar que son ambos plugins, por lo que casi no hay diferencias al trabajar con uno u otro.

Pueden ver el documento debajo, o descargar la versión PDF de este manual "Eclipse Subversive - Operaciones avanzadas".





martes, 1 de octubre de 2013

Módulo "Stock Out Alert" para control simple de abastecimiento en OpenERP

OpenERP tiene un completo sistema para manejar el stock y los abastecimientos... demasiado completo tal vez para una pequeña o mediana empresa.
Los formularios de remitos (pickins) y otras pantallas son muy complejos, al igual que los reportes. Esto no es solo una opinión personal, la misma gente de OpenERP SA se está planteando un profundo rediseño de como funciona el WMS.
Una de las tareas más complejas, inflexibles y poco prácticas es el módulo de abastecimientos (procurements). El módulo nos permite definir reglas de stock mínimas, y en base a eso disparar órdenes de manufactura o compras según la regla de abastecimiento del producto.
En el último caso (la creación de órdenes de compra), es cuando creo se aleja más de la realidad, en especial repito en PyMES: es demasiado "estructurado" pensar que un sistema ERP nos diga a quién, cuándo y en qué cantidad comprar. Si bien las ordenes son "sugerencias", se hace complejo editarlas, sobre todo si queremos combinarlas, por ejemplo porque a un mismo proveedor queremos comprarle el contenido de dos órdenes distintas. Y aún pudiéndolo hacer, termina siendo tan burocrático el manejo de esas órdenes, que uno termina ignorándolas.
De este problema nos surgió la necesidad de algo más simple, algo como tener en un reporte la cantidad de stock faltante, y que esa información sea lanzada automáticamente por mail periódicamente.
Nos sorprendió luego de mucho buscar que no había un módulo así, sobre todo uno oficial.
Por eso desarrollamos el módulo "Stock Out Alert", que cumple con esos requerimientos.
Luego de instalarlo, podemos ir a "Depósito" > "Reportes" > "Productos Sin Stock":


Luego presionamos en "Check Stock" (o "Verificar Stock" según la localización), y nos permitirá descargar un reporte con el stock faltante:



El reporte está en formato texto, pero es leíble y cumple con su función de solo informar qué falta, para que sea el usuario quien tome la decisión de qué ordenes de compra o manufactura crear.
También configura un scheduler diario para que se envié por mail el reporte en caso de haber faltantes. Enviará una copia a todos los miembros del grupo "Warehouse Management / Stock Monitor" (grupo nuevo creado también por el módulo).
Recordar que para que arroje resultados, primero se deben definir las Reglas de stock mínimo, donde le diremos a OpenERP que productos nos interesan, y cual es la cantidad mínima aceptable.
El módulo está solo probado con la versión 6.1 de OpenERP, pero no es nada complejo así que es muy posible que funcione en otras versiones.