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, 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 (_).

lunes, 7 de abril de 2014

Utilizar Launchpad Como Controlador de Versiones OPENERP

Crear y Asociar una Cuenta Launchpad para Subir Proyectos ...




    Launchpad es el manejador que utlizamos por defecto en proyectos con OpenERP, tambien existen otras opciones como es GIT, entre otros, pero en este tutorial enseƱare como crear su propia llave y ligarla con una cuenta en Launchpad.


1) Tener una cuenta de "www.launchpad.net"

    Como primer paso tenemos que registrarnos creando una cuenta en la plataforma Launchpad, es totalmente Gratuito y no Ofrece todos los beneficios para controlar Nuestros Proyectos.

2) Asociar cuenta launchpad con bazar a la pc actual

       Tenemos que abrir una terminal en nuestro Linux y escribir la siguiente Linea.

bzr whoami "NombreIdentificador <nombre@hesatecnica.com>"

       Con esta Linea tenemos que cambiar el Nombre del Identificador por el de nuestra cuenta launchpad por ejemplo con mi ID quedaria bzr whoami "german-ponce <german.ponce@h....>" al final el correo con el que creamos nuestra Cuenta.