Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

Publicidad

miƩrcoles, 18 de marzo de 2015

Solucion Error: NotImplementedError: 'update' not supported on frozendict

Error: NotImplementedError: 'update' not supported on frozendict


    Buenos Dias, lectores del Blog, este error ah sido muy comĆŗn en mi código a la hora de migrar módulos de OpenERP 7 hacia Odoo. El error ah ocurrido cuando intento hacer un update a la variable context, ustedes se preguntaran por que no podemos actualizar un simple diccionario, bueno el problema es que Odoo ahora protege la integridad de los diccionarios como Context volviĆ©ndolos Inmutables, como si se tratase de una Tupla, utilizando Frozen Dict.

El Codigo que utlizaba era algo simple como:

context.update({'date_work': invoice.date_invoice})

Al compilar el error:

NotImplementedError: 'update' not supported on frozendict


La solución fue muy simple, convertir el Diccionario Frozen Dict:

context=dict(context)
context.update({'date_work': invoice.date_invoice})

Con esto podemos convertir el Diccionario "Inmutable" a un diccionario común y poder continuar con nuestro código.


Espero que les funcione y sea de utilidad.


miƩrcoles, 4 de marzo de 2015

Definicion de Clases Api Odoo

API Odoo



    Como todos sabemos Odoo anteriormente OpenERP, ah modificado su NĆŗcleo de desarrollo, ofreciendo nuevas alternativas para la creación de Módulos para este ERP, ahora trae a nosotros los modulos Website, que permiten integrar una e-shop, un sitio web, aƱadir temas, chat de contacto, etc.
Podemos observar tambiĆ©n modificaciones al Framework de Desarrollo de Módulos, una nueva Api que cambia el Aspecto del desarrollo, pero que es compatible con el Framework de la versión 7 de OpenERP,  mis proximas entradas seran con aspectos importantes de esta nueva Version.

Definición de Clases con la nueva API (Odoo)

Para la creación de una clase con la Api de Odoo se utiliza el código siguiente:

from openerp.osv import fields, osv
from datetime import datetime
import time


class mi_clase_odoo(osv.osv):
    _name = 'mi.clase.odoo'
    #Definicion de Campos
    name = fields.Char('Nombre del Alumno', required=True)
    date_act = fields.Date('Fecha')
    _defaults = {  
        'date_act': lambda *a: time.strftime('%Y-%m-%d'),  
        }
mi_clase_odoo()

En OpenERP 7 se crearía con el código:


from openerp.osv import fields, osv
from datetime import datetime
import time


class mi_clase_odoo(osv.osv):
    _name = 'mi.clase.odoo'
    #Definicion de Campos
    _description = 'Grupos'
    _columns = {
        'name':fields.char('Nombre', size=64), 
        'date_act': fields.date('Fecha'),
    }
    _defaults = {  
        'date_act': lambda *a: time.strftime('%Y-%m-%d'),  
        }
mi_clase_odoo()

Ambas formas son Validas en el desarrollo para Odoo, ya que tiene retrocompatibilidad con la definición de clases osv.osv.

Diferencias Odoo y OpenERP7:
  • La primer diferencia es la importación de las librerĆ­as, ahora importamos api y no osv.
  • Al definir la clase heredamos models.Model y en OpenERP osv.osv.
  • Para definir un campo en Odoo, ya no es necesario ingresarlo en un diccionario, ahora se define directamente, primer elemento nombre del campo y seguido del tipo de campo a definir, en OpenERP7 utilizamos el _columns{}.
  • Definir campos por defecto se utiliza de la misma manera.
Este es mi primer Aporte sobre la Api de Odoo, espero que sea de su agrado.

Restaurar Respaldo de Odoo desde Terminal (Archivos *.dump)

Creación y restauración de respaldo Odoo desde Terminal.


    Buenos dĆ­as lectores, gracias por los comentarios y los correos, espero que este Blog los haya sacado de algĆŗn problema, hoy vengo con una entrada similar a una ya escrita en mi blog, respecto al tema de Respaldar y Restaurar bases de Odoo desde una terminal, pero ahora con algunos cambios importantes, como es ignorar tablas.

Creación del respaldo


         ParĆ”metros:

  • -i

        -- ignore-version
        Se ignora la versión de la base de datos

  • -h

       -host
       Especifica el nombre del equipo en que corre el servidor.

  • -p

       -port
       Por defecto siempre usamos el puerto 5432 por el cual podemos acceder a PostgreSQL.

  • -U

       --username
       Usuario de Postgres para generar el backup, aqui debemos revisar el archivo .conf de Odoo, o podemos siempre utilizar el Usuario postgres que trae por defecto.


  • -F

       --format
       Seleccionar el Formato de salida.

  • -b

       --blobs
       Para incluir tablas muy extensas en el dump sin errores.

  • -v

       --verbose
       Permite crear los respaldos a detalle en el dump.

  • -f

       --file
       Enviar el respaldo a un Archivo X.dump

Ejemplo:

pg_dump -i -h localhost -p 5432 -U odoo -F c -b -v -f "/opt/odoo/backups/Odoo_Test.backup" Odoo_Test


Con el fragmento anterior creamos un archivo llamado "Odoo_Test.backup" en mi ruta /opt/odoo/backups, de la base de datos Odoo_Test.

Para excluir alguna tabla, como puede ser la tabla ir_attachment, que contiene los datos adjuntos que aumenta el tamaño de la Base de Datos, quedaría el siguiente código:

pg_dump -i -h localhost -p 5432 -U odoo -F c -b -v -f "/opt/odoo/backups/Odoo_Test.backup" Odoo_Test -T ir_attachment


Como vemos solo agregamos  -T y el nombre de la tabla.

Restauración de la Base de Datos

Para poder restaurar el archivo dump o backup, es necesario crear una Base de Datos en blanco utilizamos el comando:

sudo su postgres

Una vez dentro del prompt de Postgres ejecutamos el comando para la creacion de la Base:

createdb Odoo_Resturacion -O odoo

    createdb: Indicamos el nombre de la Base Nueva.
    -O: Indicamos el usuario postgres al que pertenecerĆ” la Base que estamos creando en PostgreSQL se conoce como Owner (Propietario).

Una vez creada la Base de Datos, ejecutamos el siguiente fragmento de código, para comenzar con la Restauración:

pg_restore -i -h localhost -p 5432 -U odoo -d Odoo_Restauracion -v "/opt/odoo/bakcups/Odoo_Test.backup"

    -d: Base de Datos para restaurar la Información
    -v: Especificamos la ruta del Archivo de Respaldo.

Con esto iniciara la restauración de nuestra base de Datos.

jueves, 5 de febrero de 2015

Sistema para la Gestión de Rastros (Empresas dedicadas a la Matanza y Distribución de Carne)

GESTIƓN Y ADMINISTRACIƓN DE EMPRESAS DEDICADAS A LA MATANZA Y DISTRIBUCIƓN DE CARNE


    Buenos DĆ­as comunidad y personas que siguen mi Blog, compartiendo con ustedes desarrollos e investigaciones a lo largo de mi trayecto con este fabuloso Sistema, les vengo a hablar de una Vertiente de OpenERP (Odoo) enfocada directamente a la Gestión de Empresas dedicadas a la Matanza y distribución de Carne de Animales, en MĆ©xico comĆŗnmente conocidas como Rastros.
    
    Antes que nada esta Rama del Sistema fue creada por el Ing. LĆ”zaro RodriguĆ©z Triana, la Empresa Argil Consulting antes Hesatecnica y con unas modificaciones de mi parte L.S.C.A. German Ponce Dominguez. Pensando en un Sistema para la Administración de estas Empresas, necesitadas de un Software que les permitiera tener un Control de sus Actividades de forma FĆ”cil y que se adaptara dependiendo sus CaracterĆ­sticas propias y ante los pocos Sistemas (Programas) enfocados para este Giro, se desarrollo desde 0 este Sistema, Analizando los requerimientos principales de estas Empresas y tratando de Integrar dispositivos que normalmente se utilizan, por ejemplo Lectores de Códigos de Barras, Basculas, etc.

martes, 14 de octubre de 2014

Facturación, Ventas y Compras de Manera Simple

Agregar Productos de Manera Simple con Odoo (OpenERP)


    Odoo (OpenERP), es un excelente Programa dentro de sus caracterĆ­sticas principales, podemos destacar la interfaz tan amigable al Usuario, al momento de Capturar, Ventas, Compras y Facturas, ahora les quiero hablar de un modulo que facilita aun mĆ”s la captura de esta Información, el modulo tiene por nombre Easy Added Products, su función Principal es que se pueda aumentar la Productividad y velocidad utilizando el Sistema, al seleccionar un producto en la parte Superior, se Agrega en automĆ”tico la Linea con Dicho Producto, esto funciona para Ventas, Compras, Facturas de Cliente y Proveedor. Al ingresar la Linea dependiendo el modelo en donde lo utilicemos, tomara el valor de la Ficha de Dicho Producto, el Precio de Venta, el Precio de Compra y la Unidad de Medida por defecto, como observamos en las siguientes ImĆ”genes:


VENTAS



lunes, 13 de octubre de 2014

Sistema Transporte de Carga (Fletes) con OpenERP (Odoo)

Administración y Control de Viajes para el Sistema de Transporte de Carga, Integrado con OpenERP (Odoo)


    Buenos DĆ­as, lectores de mi Blog, gracias por su colaboración en los E-mails, ahora vengo a hablarles un poco de un Modulo que Integra el Control del Tranporte (Fletes, Viajes, Gastos, vales de Combustible), desarrollado por la Empresa Argil Consulting y con un poco de Colaboración de mi parte.
    El sistema tiene por nombre Transport Freight Manager (Administración de Transporte de Carga), el cual fue desarrollado para ser Integrado en OpenERP (Odoo) como un modulo, que permita como su nombre lo dice, administrar las Empresas dedicadas al Transporte de MercancĆ­as, permite dar de Alta Unidades, crear Cartas Porte, Vales de combustible, Manejo de Anticipos, Odometros y hasta poder Programar Mantenimientos de Unidades.

En la siguiente Imagen tenemos la Vista Principal en el Sistema OpenERP 7.0:


martes, 5 de agosto de 2014

Como Consumir el Web Service de Odoo (OpenERP)

Consumiendo el WebServices de Odoo con Python





    Muchos sabemos ó en ocasiones desconocemos como trabaja el Sistema Odoo (OpenERP), para poder comunicar la plataforma creada en Python con nuestros Navegadores convencionales, bien pues esto lo hace graciad a los Web Services y los protocolos XML-RPC y NET-RPC, el protocolo XML-RPC, se encarga de las transacciones Web y toda la parte de los Navegadores, el protocolo NET-RPC, se utilizaba anteriormente en la version 6.1 de OpenERP hacia atras para poder utilizar un Cliente de Escriorio (GTK), que era una alternativa para los Navegadores y tenia una completa integracion con el Sistema, a partir de la version 7.0 de OpenERP se elimina este Cliente y se vuelve completamente Web.

    Ahora como mencione anteriormente, utilizaremos el XML-RPC para poder consumir este Web Services utilizando un programa externo en Python, que permitira crear registros en Clientes/Proveedores (res.partner) de OpenERP.

lunes, 21 de julio de 2014

Curso de Introduccion al Desarrollo OpenERP 7.0 (Odoo)

Creando mi Primer Modulo



Buenas Tardes, en este Post, comparto el Curso Impartido sobre Desarrollo utilizando el Framework OpenObject para desarrollos con OpenERP (Odoo).


jueves, 26 de junio de 2014

Utilizar un Servidor Independiente PostgreSQL para Odoo (OpenERP 8.0)


    En ocasiones una Instalación de Odoo (OpenERP) y un servidor de Base de Datos (PostgreSQL 9.3) en un solo servidor, no son suficientes cuando el numero de Usuarios del Sistema crece demasiado, las consultas suelen ser mas lentas y en ocasiones el servidor puede Crashear por la carga de informacion y los recursos limitados de tener un solo Servidor.

    PostgreSQL es un gestor de base de datos que permite conexiones remotas, esta ventaja la podemos utilizar para tener nuestro propio servidor dedicado, unica y exclusivamente para el manejo de la Informacion, ahora como podemos tener 2 servidores para estos 2 Procesos.

viernes, 6 de junio de 2014

Solucion al Error! "UnknownLocaleError: unknown locale 'en'"?



Muchos durante el Arranque del Servidor Odoo (OpenERP) nos hemos topado con el Error:

"UnknownLocaleError: unknown locale 'en'"


Y esto cocurre por que en ocasiones la libreria Python Babel no encuentra un archivo en.data, la solucion es crear un enlace simbolico ejecutando el siguiente comando:

ln -s /usr/share/python-babel-localedata/localedata/en_150.dat /usr/share/python-babel-localedata/localedata/en.dat


Espero les haya Solucionado el Problema....