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

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....


jueves, 10 de abril de 2014

Integracion de Codigos QR con Odoo (OpenERP)

Generar Codigos QR para campos Binary en Odoo (OpenERP)



Para la generación de Códigos QR para OpenERP les enseñare a utilizar 2 Librerias:


Utilizando Python qrtools:


Lo primero que de debemos hacer es instalar la libreria qrtools, para instalarlo debemos descargar el paquete del link oficial:


Lo instalamos como cualquier paquete python con el comando :

sudo python setup.py install

Una vez instalado lo importamos en nuestros archivos .py con la linea siguiente:

from qrtools import QR

Ahora debemos agregar un Campo de Tipo binario por ejemplo:

'cfdi_cbb': fields.binary("CFD-I CBB")


Este campo es un código CBB propio de la facturación electrónica, ahora debemos ingresar la cadena para generar ese codigo CBB:

       qr_string = "La cadena para mi codigo QR" ## Cadena de Texto
       qr_code = QR(data=qr_string.encode('utf-8')) ## Encodeamos a utf8 mi Cadena
       qr_file = open(qr_code.filename, "rb") ## Escribimos la Imagen
       temp_bytes = qr_file.read() ## Leemos la Imagen
       qr_bytes = base64.encodestring(temp_bytes) ## Convertimos la Imagen para Escribirla en Base
       qr_file.close() ## Cerramos la lectura del archivo con la imagen QR

       Lo ultimo es escribir la imagen en el modelo account.invoice:

       account_obj = self.pool.get('account.invoice')
        account_obj.write(cr,uid,[ids_del_registro],{'cfdi_cbb':qr_bytes})




martes, 8 de abril de 2014

Introduccion en la Declaracion de Campos Odoo (OpenERP)

Los campos Introducción 


    Los objetos pueden contener diferentes tipos de campos. Esos tipos se pueden dividir en tres categorĆ­as: los tipos simples, tipos de relación y campos funcionales. Los tipos simples son enteros, reales, booleanos, cadenas, etc ... ; Los tipos de relación se utilizan para representar relaciones entre objetos (one2one, one2many, many2one). Campos funcionales son campos especiales porque no se almacenan en la base de datos pero calculan en tiempo real dado otros campos de la vista.

    AquĆ­ estĆ” la cabecera del mĆ©todo de inicialización de cualquier campo de la clase definida en Odoo (OpenERP) (como se puede ver en el server / bin / OSV / fields.py):
def __ init__ (self, char = "Unknow", required = False, readonly = False, domain = None, context = None, priority = 0, change_default = False, size = None, onDelete = "cascade", translate = False, selection = False, ** args):
Hay un conjunto común de parÔmetros opcionales que estÔn disponibles para la mayoría de los tipos de campos:

change_default: Ya sea o no el usuario puede definir valores por defecto en otros campos en función del valor de este campo. Estos valores por defecto deben ser definidos en la tabla ir.values.
help: Una descripción de cómo se debe utilizar el campo: mĆ”s y mĆ”s descriptivo que char . AparecerĆ” en la información sobre herramientas cuando se pasa el ratón sobre el campo.
ondelete: Cómo manejar las eliminaciones  en un registro relacionado. Por default encontraremos el valor "ondelete".
priority: No se utiliza?
readonly: True si el usuario no puede editar este campo, de lo contrario False .
required: True si el campo debe tener un valor antes de que el objeto puede ser salvado, de lo contrario False .
size: El tamaño del campo en la base de datos: número de caracteres o dígitos. Para los campos de tipo Char.
states: Permite anular otros parĆ”metros para los estados especĆ­ficos de este objeto. Acepta un diccionario con los nombres de los estados como claves y una lista de nombres / valores tuplas como los valores. Por ejemplo: states = {'done': [('readonly', True)]}
char: El nombre del campo como debe aparecer en una etiqueta o encabezado de la columna. Cadenas que contienen caracteres no ASCII deben utilizar objetos unicode de Python. Por ejemplo: 'test': fields.boolean (u'TestĆ© ')
translate: True si el contenido de este campo debe ser traducido, de lo contrario False .

OpenERP atributos de objetos

Atributos en la Definicion de Modelos en OpenERP


Objetos Introducción 

Para definir un nuevo objeto, se debe definir una nueva clase Python entonces una instancia de ella. Esta clase debe heredar de la clase OSV en el módulo osv.

Definición de objeto 

La primera línea de la definición de objeto siempre serÔ de la forma:
clase  name_of_the_object ( OSV . OSV ): 
        _name  =  'name.of.the.object' 
        _columns  =  {  ...  } 
        ... 
name_of_the_object ()
Un objeto se define declarando algunos campos con nombres predefinidos en la clase. Dos de ellos son necesarios (_name y _columns), el resto son opcionales. Los campos predefinidos son:

Campos predefinidos 

_auto
Determina si una tabla de PostgreSQL correspondiente debe ser generado automĆ”ticamente del objeto. Configuración de _auto en False puede ser Ćŗtil en caso de objetos OpenERP generados a partir de puntos de vista PostgreSQL. Consulte la sección "Informes de Visitas PostgreSQL" para obtener mĆ”s detalles.
_columns (requerido)
Se definen los campos que utilizaremos en nuestro Modelo de Datos, al final estos campos se traducen a Columnas en tablas de PostgreSQL.
_constraints
Las restricciones sobre el objeto. Validaciones en Python que aplicamos a la Información que introduce el Usuario.
_sql_constraints
La restricción de SQL en el objeto. Validaciones en SQL que aplicamos a la Información que introduce el Usuario a diferencia de las validaciones en Python estas se aplican en la capa de Datos.
_defaults
Los valores por defecto para algunos de los campos del objeto. Estos valores por defecto aparecen al momento de crear un registro en nuestro Modelo de Datos, se permiten funciones para obtener valores por Default, funciones Lambda, etc...
_inherit
El nombre del objeto osv que el objeto actual hereda. Este solo se utiliza cuando heredamos Modelos o Clases en OpenERP.
_inherits
La lista de objetos OSV el objeto hereda. Esta lista deberĆ” figurar en un diccionario python de la forma: {'name_of_the_parent_object': 'name_of_the_field', ...}. 
_log_access
Determina si el acceso de escritura al recurso debe estar conectado. Si es verdad, se crearĆ”n cuatro campos en la tabla de SQL: create_uid, create_date, write_uid, write_date. Estos campos representan, respectivamente, el ID del usuario que creó el registro, la fecha de creación del registro, el identificador del usuario que modificó el registro, y la fecha de la Ćŗltima modificación. Estos datos pueden ser obtenidos usando el mĆ©todo perm_read.
_name (requerido)
Nombre del objeto. Valor predeterminado: Ninguno. Este sera el nombre del Modelo para OpenERP y el que utlizaremos para llamar modelos con el metodo pool.get.
_order
Nombre de los campos que se utilizan para ordenar los resultados de la búsqueda y métodos de lectura.
Valor por defecto: 'id'.
Ejemplos:
_order  =  "nombre" 
_order  =  "date_order desc"
_rec_name
Nombre del campo en el que se almacena el nombre de cada recurso. Valor por defecto: "nombre". Nota: por defecto, el mĆ©todo name_get simplemente devuelve el contenido de este campo.
_sequence
Nombre de la secuencia SQL que administra los identificadores para este objeto. Valor predeterminado: Ninguno.
_sql
Código SQL ejecutado durante la creación del objeto (sólo si _auto es verdadero). Esto significa que el código se ejecuta despuĆ©s de crear la tabla.
_table
Nombre de la tabla SQL. Valor por defecto: (.) ​​El valor del campo _name anterior con los puntos reemplazada por guiones bajos (_).