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

Mostrando las entradas con la etiqueta postgres. Mostrar todas las entradas
Mostrando las entradas con la etiqueta postgres. Mostrar todas las entradas

lunes, 22 de febrero de 2016

Insertar Registros por Query SQL y retornar el ID (Odoo y OpenERP)

Insertar Registro Directamente en Base de Datos y Retornar el ID




     En ocasiones es necesario optimizar un poco nuestro código en base a Querys directos a base de datos, muchas veces insertamos registros, pero es difĆ­cil conocer el id que acabamos de insertar, un error muy comĆŗn con la programación es consultar el ultimo ID de la tabla, esto puede darnos la solución cuando solo trabajamos nosotros en la Base de Datos, pero en un entorno real, con concurrencia a la base de datos, el ultimó ID seria muy variable, para esto podemos apoyarnos de PostgreSQL y el comando RETURNING, este comando nos retorna cualquier valor, en este caso la columna serial ID, la estructura es muy simple:


self.env.cr.execute(""" INSERT INTO res_partner (name,customer) VALUES ('PonceSoft', True) RETURNING id; """)

my_id=self.env.cr.fetchall()[0][0]

La variable my_id es el ID que acabamos de insertar en la Base de Datos.



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.

miƩrcoles, 5 de febrero de 2014

Crear Reportes Jasper Reports con Conexion a Base de Datos en Odoo (OpenERP 8.0)


Creando Query SQL para Generar un Reporte

Centered Popup
    Para crear Reportes en Jasper Reports y retomando los Post Anteriores, tenemos 2 Opciones una de ellas es haciendo conexion directa a la Base de Datos y la Otra generando un archivo XML, en este post vamos a conocer como generar un reporte utilizando un Query.

01. Lo primero y mas importante es tener instalado el Modulo Jasper Reports en Nuesta Base OPENERP y tambien tener instalado el JDK de Oracle ó en su defecto el OpenJDK.


02. Abrimos el iReport y Creamos una Nueva Conexión:


jueves, 9 de enero de 2014

Manejo de Campos many2many en Odoo (OPENERP)

Manejo de Campos many2many 



    En OPENERP es muy comĆŗn que encontrĆ”semos en el código de algunos módulos la utilización de campos relacionales may2many, los cuales contienen la siguiente sintaxis:

(0, 0, { fields }) Crear nuevos registros con la lista de campos.
(1, ID, { fields }) Modificar la lista de campos.
(2, ID) Borrar un id de la relación many2many.
(3, ID) Quitar (desvincular) un id de la relación manay2many.
(4, ID) Vincular un id
(5, ID) Desvincular todas las veces que aparece un id
(6,?, IDS) Establecer una lista de enlaces

    Por ejemplo para enlazar los impuestos de un producto al crear una linea en pedidos de venta o en lineas de factura nuestros valores quedarĆ­an de la siguiente manera:

pedido_padre_id = 65
product_obj = self.pool.get('product.product')
product_id = product_obj.search(cr, uid, [('name','=','Soda 2.5 Litros')])
product_browse = product_obj.browse(cr, uid, product_id, context=None)[0]

 linea_venta = {
                'product_id'           :  product_browse.id,
                'product_uom_qty' :  1,
                'product_uom'     : product_browse.uom_id.id,
                'product_uos_qty' : 1,
                'price_unit'          : product_browse.list_price,
                'name'                 : product_browse.name,
                'type'                   : 'make_to_stock',
                'default_code'      : product_browse.default_code,
                'tax_id'                : [(6, 0, [x.id for x in line.product_id.taxes_id])],
                'order_id'             :  pedido_padre_id,
            })

 order_line_id = self.pool.get('sale.order.line').create(cr, uid, linea_venta, context=None)

   Que pasa en este ejemplo estoy creando una linea para el pedido de venta con el ID 65 en la cual estoy pasando la información del producto 'Soda de 2.5 Litros' hacia mi linea, el punto mas importante en este ejemplo ó la que estamos estudiando es  'tax_id' : [(6, 0, [x.id for x in line.product_id.taxes_id])], que estamos haciendo en esta parte del código, estamos enlazando los impuestos del producto anterior en mi linea de pedido, Ć©sto nos evita que nosotros realicemos la creación de cada impuesto al momento de mandar cada linea a un pedido de venta.
    

miƩrcoles, 8 de enero de 2014

MƩtodos ORM BƔsicos para Programar Modulos en Odoo (OpenERP)

MƩtodos ORM bƔsicos (Crear, Buscar, Leer, Actualizar y Borrar)

MƩtodo create

Sintaxis

create (cr, uid, values, context=None)

Crea un nuevo registro con los valores especificados. ParƔmetros especƭficos:

values: Diccionario con los valores de los campos para el nuevo registro.

Devuelve el id del registro creado. Puede generar los siguientes errores:

AccessError: Si el usuario no tiene permisos de escritura en el objeto solicitado, o si el usuario intenta
ignorar las reglas de acceso para crear el objeto solicitado.

ValidateError: Si el usuario intenta introducir un valor invƔlido para un campo que no estƔ en la
selección.

UserError: Si se crease un bucle en una estructura de objetos jerÔrquica como resultado de la operación (como establecer un objeto como su propio padre).

Por ejemplo para crear un producto tendriamos que generar el diccionario con los valores necesarios, principalmente los que son requeridos por el Modelo:

product_obj = self.pool.get('product.product')

product_vals = {
                         'name': 'Producto X',
                         'type': 'product' ,
                         'list_price': 45.00,
                         'procure_method': 'make_to_stock',
                         }

product_create_id = product_obj.create(cr, uid, product_vals, context=None)

lunes, 6 de enero de 2014

Restricciones en OpenERP mediante PostgreSQL

En OpenERP existen 2 Tipos de principales para validar la información que esta introduciendo el usuario contra la contenida en el sistema, ya sea contra la hora del sistema o algĆŗn formato necesario para la información, etc., estos tipos de validación serian:
 - Mediante funciones Python: Este tipo de restricción se realiza mediante funciones python.
 - Mediante restricciones de la Base de Datos(SQL Constraint): Este tipo de restricción se define en la clase a la cual se aplicara o la tabla a la cual se estarĆ” validando que los datos cumplan con los requisitos que definimos, por ejemplo si queremos que el campo nombre de un producto sea Ćŗnico tendrĆ­amos que tener esta restricción en mi clase.
Restricciones con Funciones Python