Odoo no asume el punto del teclado numérico como coma de decimales.

Actualmente Odoo no reconoce el punto del teclado numérico como coma,

Esto realmente no es un problema de Odoo. Simplemente windows y sus aplicaciones de Office nos tienen acostumbrados a reemplazar automáticamente el punto de teclado numérico por la coma. cosa que los navegadores no hacen de forma estandar.

Existe un modulo "web_decimal_numpad_dot" que intenta solucionar esto.

Pero no termina de funcionar...no funciona para todos los campos, por ejemplo en Oportunidades no funciona, No funciona en el TPV, y a veces pone dos comas en vez de una.

Nosotros de momento hemos encontrado esta solución:

http://www.gruponeo.net/demos/NeoChange.zip

Este software al instalarlo te crea un icono en la barra de tareas(junto al reloj) que te permite cambiar el comportamiento del punto del teclado numérico.

Lógicamente solo funciona en windows

Un saludo¡

 

 

 

 

 

 

Como seleccionar una base de datos por defecto - How to select one database by default (OpenERP / Odoo)

Como forzar la seleccion deuna base de datos en OpeneRP Odoo

Añadiendo estos parámetros en el archivo openerp-server.conf

db_name = 'test'
dbfilter = 'test'
list_db = False

Con esto hacemos que openerp / odoo seleccione siempre la base de datos test , el usuario no tiene opcion de cambiar la base de datos al logearse

:)

 

 

Dominios complejos en una vista openerp, Complex domain in views - openerp

Un ejemplo de como aplicar un dominio complejo sobre un campo

    def _get_partner_domain(self, cr, uid, ids, field_name, arg, context=None):
        #esta funcion devolvera una cadena de tecto de tipo “[1,34,23,45]” con los ids dela tabla res.partner que queremos mostrar.
        res = {}
        for orden in self.browse(cr, uid, ids, context = context):
            partners=[]
            #Realizamos las consultas necesarias para obtener los Ids que buscamos y los pasamos a la lista “partners”
            #depues debemos pasar la lista a una cadena de texto, existen varias formas.. esta es una de ellas
:
            string = ''
            for i in partners:
                string = string + str(i) + ','
            res[orden.id] =  '['+string+']'
        return res
 
   
     _columns = {
        'partner_domain': fields.function(_get_partner_domain, method=True, type='char', string='Domain'),
        'partner_id': fields.many2one('res.partner', 'Partner', required = False, domain = "[('id','in',eval(partner_domain) )]"),

La columna partner_domain es simplemente un campo de tipo char que ontiene una cadena con los ids que queremos mostrar.
En la columna partner_id añadimos como valor de  dominio el campo partner_domain , Muy importante es usar la expresion eval(), para que convierta la cadena de texto en una lista.

Ejemplo de envío de un mail desde OpenERP Odoo Sample code to send mail from openerp odoo

Ejemplo de envío de un mail desde OpenERP Odoo

                ctx = dict(context)
                ctx.update({
                    'default_model': 'acp_exp.parte',
                    'default_res_id': parte.id,
                    'default_composition_mode': 'comment',
                    'mark_so_as_sent': True
                })               
                mail_obj = self.pool.get('mail.compose.message')
                

                partner_id = self.pool.get('res.users').browse(cr, uid, empleado_seg_id, context=context).partner_id.id
                subject = 'NUEVA ACTIVIDAD ASIGNADA:' + self.pool.get('acp_exp.actividad').browse(cr, uid, vals.get('actividad_id',False), context=context).name  
                body = 'NUEVA ACTIVIDAD ASIGNADA:' + self.pool.get('acp_exp.actividad').browse(cr, uid, vals.get('actividad_id',False), context=context).name + ' , Observaciones:' + vals.get('observaciones','')
                mail_id = mail_obj.create(cr, uid, {'partner_ids':[(6, 0, [partner_id])],'subject':subject,'body':body}, context=ctx)
                mail_obj.browse(cr, uid, mail_id, context).send_mail()

Cambiar Ancho de la Hoja OpenERP 7 - Change width of the sheet OpenERP 7

Para cambiar el ancho de la pagina (Sheet) en OpenERP 7:

Editar el Archivo :

/addons/web/static/src/css/base.css

los valores:

    .openerp .oe_form_sheet_width {
        min-width: 650px;
        max-width: 860px;
        margin: 0 auto;

 

Definen el ancho de la hoja de formulario.
Para ajustar al ancho maximo con un margen de 15px en los laterales, escribir:

    .openerp .oe_form_sheet_width {
          min-width: 650px;
          max-width: 100%;
          margin: auto 15px;

Eso es todo¡

 

Crear vista formulario en one2many OpenERP v7

En la versión 7 de OpenERP ha cambiado un poco la creación de las vistas, para crear una vista en modi formulario sobre un campo one2many antes era:

field name="address_ids" colspan="4" nolabel="1" height="260" mode="tree,form">
    <tree string="Student Address">
            <field name="phone"/>
            <field name="email"/>      
    </tree>   
    <form string="Student Address" >
            <field name="phone"/>
            <field name="email"/>      
    </form>         

 

  
</field>

ahora sehace asi:

field name="address_ids" colspan="4" nolabel="1" height="260">
    <tree string="Student Address">
            <field name="phone"/>
            <field name="email"/>      
    </tree>   
    <form string="Student Address" >
            <field name="phone"/>
            <field name="email"/>      
    </form>           
</field>

se elimina el parámetro mode="tree,form

 

Instalar jasperserver en openerp 6.1 - 7.0 en Ubuntu - Windows

INSTALANDO DEPENDENCIAS

Para Linux:

sudo apt-get install python-httplib2

sudo apt-get install python-pyPdf

INSTALAMOS python-dime

wget https://pypi.python.org/packages/source/p/python-dime/python-dime-0.2.1.tar.gz

Descomprimimos el archivo y entramos en la carpeta descomprimida y:

                               sudo python setup.py install

Para Windows:

                1-Instalamos el entorno de desarrollo de Python

Instalar Python 2.7 y Activestate activepython 2.7.5.6 (Añade la utilidad pip.exe que luego necesitaremos)

                2-Instalamos las librerias necesarias

pip install httplib2

pip install pyPdf

pip install python-dime

3-Copiamos las librearias al directorio de OpenERP Server: las librerias por defecto se instalan en la carpeta C:\Python27\Lib\site-packages. Es necesario copiarlas al directorio “C:\Program Files (x86)\OpenERP 6.1-20130925-233312\Server\Server”

            Hay que copiar las carpetas:

                pyPdf

    httplib2

                 y el archivo:

     dime.py

      Y reiniciamos el server

DESCARGAMOS JARPER SERVER

Para Linux

wget http://community.jaspersoft.com/sites/default/files/releases/jasperreports-server-cp-5.1.0-linux-x86-installer.run

Para Windows:

                http://kent.dl.sourceforge.net/project/jasperserver/JasperServer/JasperReports%20Server%20Community%20Edition%205.5.0/jasperreports-server-cp-5.5.0-windows-x64-installer.exe

INSTALAMOS JARPER SERVER

                Para Linux:

    Para la instalación el usuario postgres debe tener una password

                                sudo su posgres

                                psql

                                ALTER ROLE postgres PASSWORD 'postgres'

                Iniciamos la instalación:

                                               sudo sh ./archivo.run

o

sudo  ./archivo.run

seguimos los pasos de instalacion ( ojo¡ hay que decirle que queremos usar una base de datos existente y pasarle los datos de conexión)

                Para Windows

Iniciamos la instalación y seguimos los pasos seguimos los pasos de instalación ( ojo¡ hay que decirle que queremos usar una base de datos existente y pasarle los datos de conexión, por lo que debemos saber la pass del usuario postgres)

 

Acceso al servidor de jasper por la web

http://192.168.1.207:8080/jasperserver/   (El puerto puede cambiar) Desde aquí podemos configurar usuarios, informes, programa ejecución y envió de informes de forma automática… etc… es ideal para crear un cuadro de mando para gerencia…( de momento no lo usaremos )

INSTALACIÓN DE LA PARTE DE OPENERP

                               Descargamos el módulo: jasper_server y lo instalamos de la forma habitual

                               (el ultimo probado con este tutorial para la versión 6.1 es : https://launchpadlibrarian.net/125228006/jasper_server_6.1.6.1.tar.gz )

                              (el ultimo probado con este tutorial para la versión 7.0 es : https://github.com/syleam/openerp-jasperserver/archive/7.0.zip )

INICIAR JASPER SERVER

                Linux:

                  /opt/jasperreports-server-cp-5.1.0$ sudo ./ctlscript.sh start

                Windows:

                  Iniciamos el servicio jasperreportsTomcat

ERRORES CONOCIDOS

Al ejecutar un informe da un error diciendo que no se puede abrir el pdf porque esta corrupto :

'pyPdf.utils.PdfReadError'>, PdfReadError('EOF marker not found', open

Para solucionar esto editamos el archivo:

C:\Program Files (x86)\OpenERP 6.1-20130925-233312\Server\server\openerp\addons\jasper_server\report\report_soap.py

Y cambiar donde pornga:

                open(????, 'r')  por  open(????, 'rb')

PARA CONECTAR A JASPER DESDE IREPORT

acceder a : ventana --> jasperServer Report Repository y añadir el servidor (usuarios jasperadmin , pass jasperadmin)

CREANDO LA ESTRUCTURA DE DIRECTORIOS EN JARPERSERVER

Hay que crear una estructura de directorios para que funcione correctamente:

                               openerp/bases/<nombre de la base de datos> ( y ahí colgamos los informes )

                               En el ejemplo que se ve, el nombre de la base de datos es “openerp”

jasperserver openerp

SUBIR UN INFORME A JASPER SERVER

Una vez diseñado el informe con Ireport debemos subirlo al repositorio de Jasper , para esto:

Con el informe que hemos diseñado abierto en la vista diseño. Pulsamos con el botón derecho sobre la base de datos en el repositorio y seleccionamos ”Add à Jasperserver Report”

jasperserver openerp

Ponemos el id y nombre del report igual, (este dato lo necesitaremos después para definir el informe en OpenERP)

jasperserver openerp

Seleccionamos “Locally Defined” y pulsamos “Get Source from opened report”

jasperserver openerp

Pulsamos “Siguiente”. Ahora toca definir el DataSource, de nuevo seleccionamos “Locally Defined” y “Editr local datasource”.

Le damos un nombre al Datasource y pulsamos en la pestaña “Data source details”

jasperserver openerp

Pulsamos el botón “import from Ireport” y seleccionamos el datasource que hemos usado para la creación del informe, y aceptamos

jasperserver openerp

y guardamos

jasperserver openerp

Y finalizamos el asistente

jasperserver

CONFIGURACIÓN DEl SERVIDOR JASPER EN OPENERP

jasperserver