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 called functions. Mostrar todas las entradas
Mostrando las entradas con la etiqueta called functions. Mostrar todas las entradas

miƩrcoles, 23 de septiembre de 2015

Ejecución de Métodos en Clases Odoo desde Web Services

Como ejecutar un MƩtodo desde un Web Services Python



Anteriormente hable un poco sobre como utilizar los Web Services de Odoo desde aplicaciones externas como Python Django, ahora quiero compartir como ejecutar un método no propio del FrameWork( Create, Unlink, Copy, Search, Write, Read), si no ejecutar un metodo de una clase X, por ejemplo el método Confirmar Pedido de Venta desde una conexión Web Service Python.

La sintaxis es la siguiente:

import xmlrpclib
dbname = "Mi_Base"
username = "admin"
pwd = "admin"
sock_common = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')
res = sock.execute(dbname, username, pwd, 'sale.order', 'action_button_confirm', [1])
print '############ Resultado >>>>> ',res
print " Ejecución Finalizada ... "

    Como podemos observar, es necesario Indicar la Base de Datos, Usuario y ContraseƱa de admin o algĆŗn usuario con los permisos sobre la clase que vamos a trabajar y al final enfocarnos en los IDS del metodo a ejecutar, en el ejemplo anterior mande el registro 1 de la tabla sale_order.

viernes, 3 de julio de 2015

Llamar funciones python desde Qweb Reports

Funciones Python desde Qweb Reports



    Qweb Reports el nuevo Reporteador para Odoo, ofrece muchas ventajas como lo ofrecĆ­a anteriormente RML, en ocaciones no podemos ejecutar directamente una operacion en Qweb o necesitamos tener un resultado de una funcion, esto es muy sencillo en RML, vamos a tomar como ejemplo las Facturas y voy a ejecutar un metodo desde el reporte Qweb, para calcular manualmente el total de un producto:


Qweb


<span  t-esc="line.subtotal_manual(line.price_unit,line.quantity)"/>

    Como podemos observar line es mi variable de iteracion para obtener los valores de invoice_lines, las lineas de Factura, para ejecutar un metodo llamado subtotal_manual. Este metodo que estamos utilizando no existe en el objecto account.invoice.line, asĆ­ que tendremos que crearlo.

Clases Python

# -*- encoding: utf-8 -*-
############################################################################
#    (c) 2015 German Ponce Dominguez
#    All Rights Reserved.
#    info skype: german_442 email: (german.ponce@outlook.com)
############################################################################

from openerp.osv import fields, osv
from openerp.tools.translate import _
from datetime import datetime, timedelta
from openerp import SUPERUSER_ID

class account_invoice_line(osv.osv):
    _name = 'account.invoice.line'
    _inherit ='account.invoice.line'
    _columns = {

        }

    _defaults = {
        }

    def subtotal_manual(self, price, qty):
        return price*qty

    En la clase python account_invoice_line, se aƱade el metodo que queremos ejecutar, esto sera variable de acuerdo al objecto en donde quieran ejecutar su funcion.