Problema con Onchange en campo nuevo en objeto sale.order

1,285 views
Skip to first unread message

Juan Sallent

unread,
May 5, 2014, 9:52:34 AM5/5/14
to openerp-s...@googlegroups.com
Buenas Team

Soy nuevo en desarrollo de OOpenERP y tengo un problema en una vista con el método onchange
Version OpenERP 7.0

Explico paso a paso

1. Creado nuevo modelo/tabla llamado -> "x_ref.interna" con varios campos y lo he relacionado con el objeto sale.order.
2. Modificado el objeto sale.order y he incluido campo x_name (many2one) -> x_ref.interna
3. Modificado form sale.order.form con:
              ...
              ....
               <field name="x_name" on_change="onchange_cirugia_id(x_name, context)" widget="selection"/>        
              ....
              ....
4. Modificado código en sale.py en addons/sale con el siguiente código:

    def onchange_cirugia_id(self, cr, uid, ids, x_name_id, context=None):
        val = {}
        if x_name_id:
            cirugia = self.pool.get('x_ref.interna').browse(cr, uid, x_name_id, context=context)
            val['x_paciente'] = cirugia.x_paciente
        return {'value': val}

5. Reancamos servidor Openerp y cuando intentamos crear un pedido de ventas nos da el siguiente error en el form sale.order.form
 
File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 187, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/addons/sale/sale.py", line 342, in onchange_cirugia_id
    
TypeError: cannot concatenate 'str' and 'int' objects

Podéis ayudarme y orientarme?

Muchísimas gracias a todos. 
Juan

Alvaro Fernandez

unread,
May 5, 2014, 10:08:52 AM5/5/14
to openerp-s...@googlegroups.com
Hola,

     Creo que el problema viene de que le estás asignando un browse_record en vez de un entero (el id). Prueba con esto "val['x_paciente'] = cirugia.x_paciente.id"




Álvaro Fernández

Juan Sallent

unread,
May 5, 2014, 11:05:59 AM5/5/14
to openerp-s...@googlegroups.com
Buenas

Me olvidé de comentar que la tabla/modelo x_ref.interna tiene varios campos, pongo lista de campos:

x_autorizaAutorizacióncharNo puede ser buscadoCampo personalizado
x_centroCentromany2oneNo puede ser buscadoCampo personalizado
x_company_idCompañíamany2oneNo puede ser buscadoCampo personalizado
x_doctorDoctormany2oneNo puede ser buscadoCampo personalizado
x_fec_operFecha OperacióndateNo puede ser buscadoCampo personalizado
x_nameReferencia Interna/CirugíacharNo puede ser buscadoCampo personalizado
x_nhcNHC/Historial ClínicocharNo puede ser buscadoCampo personalizado
x_otrosOtrostextNo puede ser buscadoCampo personalizado
x_pacientePacientecharNo puede ser buscadoCampo personalizado
x_polizaPólizacharNo puede ser buscadoCampo personalizado
x_stateEstadoselectionNo puede ser buscadoCampo personalizado
x_tarjetaTarjetacharNo puede ser buscadoCampo personalizado    
El valor del campo que intento obtener es x_paciente de la x_ref.interna que es de tipo CHAR.

En la tabla sale.order también está el campo x_paciente.

Necesito obtener el valor del x_paciente de x_ref.interna de tipo CHAR y copiarlo a la tabla sale.order.x_paciente también de tipo CHAR.

Muchas gracias

Alvaro Fernandez

unread,
May 5, 2014, 11:13:56 AM5/5/14
to openerp-s...@googlegroups.com
Yo en estos casos, suelo utilizar el método "update" de los diccionarios: val.update({'x_paciente':cirugia.x_paciente or ''})

Ese "or" al final puede salvarte de muchos errores en el caso de que el campo sea vacío. Más allá de eso, y así a bote pronto y sin más datos, no se me ocurre qué puede estar pasando.




Álvaro Fernández

Juan Sallent

unread,
May 5, 2014, 11:22:08 AM5/5/14
to openerp-s...@googlegroups.com
Buenas tardes Alvaro

¿Cómo lo implementarías?

Te paso ejemplo:

def onchange_cirugia_id(self, cr, uid, ids, x_name_id, context=None):
        val = {}
        if x_name_id:
            cirugia = self.pool.get('x_ref.interna').browse(cr, uid, x_name_id, context=context)
            val.update({'x_paciente':cirugia.x_paciente or ''})
        return {'value': val}

¿correcto?

Muchas gracias

Alvaro Fernandez

unread,
May 5, 2014, 11:31:02 AM5/5/14
to openerp-s...@googlegroups.com
Si, así. Coméntanos los resultados cuando lo pruebes.






Álvaro Fernández

Juan Sallent

unread,
May 5, 2014, 11:40:12 AM5/5/14
to openerp-s...@googlegroups.com
Buenas tardes Alvaro

Sigue dando problemas

Detalle Código fuente:

class sale_order(osv.osv):
    _name = "sale.order"
    _inherit = ['mail.thread', 'ir.needaction_mixin']
    _description = "Sales Order"
    _track = {
        'state': {
            'sale.mt_order_confirmed': lambda self, cr, uid, obj, ctx=None: obj['state'] in ['manual', 'progress'],
            'sale.mt_order_sent': lambda self, cr, uid, obj, ctx=None: obj['state'] in ['sent']
        },
    }

    def onchange_shop_id(self, cr, uid, ids, shop_id, context=None):
        v = {}
        if shop_id:
            shop = self.pool.get('sale.shop').browse(cr, uid, shop_id, context=context)
            if shop.project_id.id:
                v['project_id'] = shop.project_id.id
            if shop.pricelist_id.id:
                v['pricelist_id'] = shop.pricelist_id.id
        return {'value': v}

    def onchange_cirugia_id(self, cr, uid, ids, x_name_id, context=None):
        val = {}
        if x_name_id:
            cirugia = self.pool.get('x_ref.interna').browse(cr, uid, x_name_id, context=context)
"            val['x_paciente'] = cirugia.x_paciente
            val.update({'x_paciente':cirugia.x_paciente or ''}) 
       return {'value': val}
...
...

Log de errores:

File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 187, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/addons/sale/sale.py", line 342, in onchange_cirugia_id
    return {'value': val}
TypeError: cannot concatenate 'str' and 'int' objects

Una cosa, entiendo que desde el método que he creado def onchange_cirugia_id dentro de la clase class sale_order(osv.osv): tengo acceso a la nueva tabla x_ref.interna
o tengo que declararla en algún sitio para poder acceder a los datos de la tabla?

Muchas gracias

Juan Sallent

unread,
May 6, 2014, 3:00:21 AM5/6/14
to openerp-s...@googlegroups.com
Buenos días,

Alguna posible solución al problema?

Muchas gracias a todos.
Juan

Pedro Manuel Baeza Romero

unread,
May 6, 2014, 3:05:22 AM5/6/14
to openerp-s...@googlegroups.com
Buenas, Juan,

Prueba lo que te dijo Álvaro. Te pongo el código según su comentario (y con una comprobación de que el valor existe por si acaso):


    def onchange_cirugia_id(self, cr, uid, ids, x_name_id, context=None):
        val = {}
        if x_name_id:
            cirugia = self.pool['x_ref.interna'].browse(cr, uid, x_name_id, context=context)
            val['x_paciente'] = cirugia.x_paciente and cirugia.x_paciente.id or False
       return {'value': val}

Un saludo.


--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan Sallent

unread,
May 6, 2014, 3:21:26 AM5/6/14
to openerp-s...@googlegroups.com
Buenos días Pedro

Sigue dando problemas...

Te adjunto modificación en rojo incluida en sale.order.form y en sale.py

<?xml version="1.0"?>
<form string="Sales Order" version="7.0">
                    <header>
                        <button name="invoice_recreate" states="invoice_except" string="Recreate Invoice" groups="base.group_user"/>
                        <button name="invoice_corrected" states="invoice_except" string="Ignore Exception" groups="base.group_user"/>
                        <button name="action_quotation_send" string="Send by Email" type="object" states="draft" class="oe_highlight" groups="base.group_user"/>
                        <button name="action_quotation_send" string="Send by Email" type="object" states="sent,progress,manual" groups="base.group_user"/>
                        <button name="print_quotation" string="Print" type="object" states="draft" class="oe_highlight" groups="base.group_user"/>
                        <button name="print_quotation" string="Print" type="object" states="sent,progress,manual" groups="base.group_user"/>
                        <button name="action_button_confirm" states="draft" string="Confirm Sale" type="object" groups="base.group_user"/>
                        <button name="action_button_confirm" states="sent" string="Confirm Sale" class="oe_highlight" type="object" groups="base.group_user"/>
                        <button name="action_view_invoice" string="View Invoice" type="object" class="oe_highlight" attrs="{'invisible': [('invoice_exists', '=', False)]}" groups="base.group_user"/>
                        <button name="339" string="Create Invoice" type="action" states="manual" class="oe_highlight" groups="base.group_user"/>
                        <button name="copy_quotation" states="cancel" string="New Copy of Quotation" type="object"/>
                        <button name="cancel" states="draft,sent" string="Cancel Quotation" groups="base.group_user"/>
                        <button name="action_cancel" states="manual,progress" string="Cancel Order" type="object" groups="base.group_user"/>
                        <button name="invoice_cancel" states="invoice_except" string="Cancel Order" groups="base.group_user"/>
                        <field name="state" widget="statusbar" statusbar_visible="draft,sent,progress,done" statusbar_colors="{&quot;invoice_except&quot;:&quot;red&quot;,&quot;waiting_date&quot;:&quot;blue&quot;}"/>
                </header>
                <sheet>
                    <h1>
                        <label string="Quotation " attrs="{'invisible': [('state','not in',('draft','sent'))]}"/>
                        <label string="Sales Order " attrs="{'invisible': [('state','in',('draft','sent'))]}"/>
                        <field name="name" class="oe_inline" readonly="1"/>
                    </h1>
                    <group>
                        <group>
                            <field name="partner_id" on_change="onchange_partner_id(partner_id, context)" domain="[('customer','=',True)]" context="{'search_default_customer':1, 'show_address': 1}" options="{&quot;always_reload&quot;: True}"/>
                            <field name="partner_invoice_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'invoice'}"/>
                            <field name="partner_shipping_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'delivery'}"/>
                          
                           <field name="x_centro" attrs="{'readonly': [('state','in',('sent','done'))]}"  domain="[('client_type','=','HOSPITAL')]"/>
                           <field name="x_paciente" attrs="{'readonly': [('state','in',('sent','done'))]}"/>
                           <field name="x_doctor" attrs="{'readonly': [('state','in',('sent','done'))]}"  domain="[('client_type','=','DOCTOR')]"/>             
                           <field name="x_tarjeta" attrs="{'readonly': [('state','in',('sent','done'))]}"/>
                          <field name="x_poliza" attrs="{'readonly': [('state','in',('sent','done'))]}"/>

                            <field name="project_id" context="{'partner_id':partner_invoice_id, 'default_pricelist_id':pricelist_id, 'default_name':name, 'default_type': 'contract'}" groups="sale.group_analytic_accounting" domain="[('type','in',['view','normal','contract'])]"/>
                        </group>
                        <group>
                            <field name="date_order"/>
                            <field name="shop_id" groups="base.group_no_one" on_change="onchange_shop_id(shop_id, context)" widget="selection"/>
                            <field name="client_order_ref"/>
                            <field domain="[('type','=','sale')]" name="pricelist_id" groups="product.group_sale_pricelist" on_change="onchange_pricelist_id(pricelist_id,order_line)"/>
                            <field name="currency_id" invisible="1"/>    
                           <field name="x_name" string="Cirugía" on_change="onchange_cirugia_id(x_name)" context="{'x_paciente': x_paciente,
                           'x_autoriza': x_autoriza}"/>            
                           <field name="x_nhc" attrs="{'readonly': [('state','in',('sent','done'))]}"/>  
                           <field name="x_fec_oper" attrs="{'readonly': [('state','in',('sent','done'))]}"/>   
                           <field name="x_autoriza" attrs="{'readonly': [('state','in',('sent','done'))]}"/>   
 
                   
                        </group>
 ...
...

Código sale.py


    def onchange_partner_id(self, cr, uid, ids, part, context=None):
        if not part:
            return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False,  'payment_term': False, 'fiscal_position': False}}

        part = self.pool.get('res.partner').browse(cr, uid, part, context=context)
        addr = self.pool.get('res.partner').address_get(cr, uid, [part.id], ['delivery', 'invoice', 'contact'])
        pricelist = part.property_product_pricelist and part.property_product_pricelist.id or False
        payment_term = part.property_payment_term and part.property_payment_term.id or False
        fiscal_position = part.property_account_position and part.property_account_position.id or False
        dedicated_salesman = part.user_id and part.user_id.id or uid
        val = {
            'partner_invoice_id': addr['invoice'],
            'partner_shipping_id': addr['delivery'],
            'payment_term': payment_term,
            'fiscal_position': fiscal_position,
            'user_id': dedicated_salesman,
        }
        if pricelist:
            val['pricelist_id'] = pricelist
        return {'value': val}

     def onchange_cirugia_id(self, cr, uid, ids, x_name_id, context=None):
        val = {}
        if x_name_id:
            cirugia = self.pool.get('x_ref.interna').browse(cr, uid, x_name_id, context=context)
            val['x_paciente'] = cirugia.x_paciente and cirugia.x_paciente.id or False
            val['x_autoriza'] = cirugia.x_autoriza and cirugia.x_autoriza.id or False
        return {'value': val}

Log de errores:

File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 132, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 199, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 187, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/addons/sale/sale.py", line 342, in onchange_cirugia_id
    return {'value': val}
TypeError: cannot concatenate 'str' and 'int' objects

Alguna idea de lo que puede estar ocurriendo?. 

Una cosa, desde el método que he creado def onchange_cirugia_id dentro de la clase class sale_order(osv.osv): tengo acceso a la nueva tabla x_ref.interna
o tengo que declararla en algún sitio para poder acceder a los datos de la tabla?

Muchas gracias a todos
Juan
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.

Pedro Manuel Baeza Romero

unread,
May 6, 2014, 3:26:08 AM5/6/14
to openerp-s...@googlegroups.com
¿Por qué le pasas el campo tiene ese context?

Puedes tener acceso a esa "tabla" con self.pool['nombre_tabla'].

Un saludo.


Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

Juan Sallent

unread,
May 6, 2014, 3:39:45 AM5/6/14
to openerp-s...@googlegroups.com
Buenas Pedro,

Soy nuevo en programacion en OpenERP y voy un poco perdido. He mirando el tratamiento de otro módulo (crm.lead) he copiado el mismo tratamiento que hace el form de crm.lead en el on_change_partner_id donde al cambiar el partner obtiene la calle, ciudad, pais....

¿quieres decir que sería más correcto en el XML del sale.form no indicar el context?

 <field name="x_name" string="Cirugía" on_change="onchange_cirugia_id(x_name, context)"/>  

Muchas gracias
Juan

Pedro Manuel Baeza Romero

unread,
May 6, 2014, 3:52:08 AM5/6/14
to openerp-s...@googlegroups.com
El context se pone para modificar el comportamiento del campo en la vista, y para pasar ciertos parámetros a los métodos que se llamen desde ese campo, pero en principio eso no debería tener que ver con tu problema. De todas formas, puedes eliminarlo tranquilamente.

Sobre lo otro, haz una cosa, elimina el código del método y empieza desde lo simple (asignar un valor fijo), para ver si funciona, y si es así, después continúas añadiendo complejidad hasta ver dónde falla.

Un saludo.

Juan Sallent

unread,
May 6, 2014, 4:46:38 AM5/6/14
to openerp-s...@googlegroups.com
Buenas Pedro

Codigo sale.py

     def onchange_cirugia_id(self, cr, uid, ids, x_name_id, context=None):
        val = {}
        if x_name_id:
"            cirugia = self.pool.get('x_ref.interna').browse(cr, uid, x_name_id, context=context)
"            val['x_paciente'] = cirugia.x_paciente and cirugia.x_paciente.id or False
"            val['x_autoriza'] = cirugia.x_autoriza and cirugia.x_autoriza.id or False
              val = {'x_paciente': '1','x_autoriza': '2'}
        return {'value': val}
    
Error

File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 187, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/addons/sale/sale.py", line 342, in onchange_cirugia_id
    val = {'x_paciente': '1','x_autoriza': '2'}
TypeError: cannot concatenate 'str' and 'int' objects

Tengo que definir el tipo de datos x_paciente y x_autoriza en algún sitio?...piensa que estos campos están en la tabla sale.order y quiero que se informen de vuelta.

Gracias

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Pedro Manuel Baeza Romero

unread,
May 6, 2014, 4:49:33 AM5/6/14
to openerp-s...@googlegroups.com
¿Están incluidos en la vista dichos campos?

Un saludo.


Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

Juan Sallent

unread,
May 6, 2014, 5:00:57 AM5/6/14
to openerp-s...@googlegroups.com
Buenas Pedro

En la vista -> sale.order.form

 <group>
                        <group>
                            <field name="partner_id" on_change="onchange_partner_id(partner_id, context)" domain="[('customer','=',True)]" context="{'search_default_customer':1, 'show_address': 1}" options="{&quot;always_reload&quot;: True}"/>
                            <field name="partner_invoice_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'invoice'}"/>
                            <field name="partner_shipping_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'delivery'}"/>
                          
                           <field name="x_centro" attrs="{'readonly': [('state','in',('sent','done'))]}"  domain="[('client_type','=','HOSPITAL')]"/>
                           <field name="x_paciente" attrs="{'readonly': [('state','in',('sent','done'))]}"/>
                           <field name="x_doctor" attrs="{'readonly': [('state','in',('sent','done'))]}"  domain="[('client_type','=','DOCTOR')]"/>             
                           <field name="x_tarjeta" attrs="{'readonly': [('state','in',('sent','done'))]}"/>
                          <field name="x_poliza" attrs="{'readonly': [('state','in',('sent','done'))]}"/>

                            <field name="project_id" context="{'partner_id':partner_invoice_id, 'default_pricelist_id':pricelist_id, 'default_name':name, 'default_type': 'contract'}" groups="sale.group_analytic_accounting" domain="[('type','in',['view','normal','contract'])]"/>
                        </group>
                        <group>
                            <field name="date_order"/>
                            <field name="shop_id" groups="base.group_no_one" on_change="onchange_shop_id(shop_id, context)" widget="selection"/>
                            <field name="client_order_ref"/>
                            <field domain="[('type','=','sale')]" name="pricelist_id" groups="product.group_sale_pricelist" on_change="onchange_pricelist_id(pricelist_id,order_line)"/>
                            <field name="currency_id" invisible="1"/>    
                             <field name="x_name" string="Cirugía" on_change="onchange_cirugia_id(x_name, context)"/>               
                           <field name="x_nhc" attrs="{'readonly': [('state','in',('sent','done'))]}"/>  
                           <field name="x_fec_oper" attrs="{'readonly': [('state','in',('sent','done'))]}"/>   
                           <field name="x_autoriza" attrs="{'readonly': [('state','in',('sent','done'))]}"/>   

¿Tengo que ponerlos en algún otro sitio?

Gracias

Pedro Manuel Baeza Romero

unread,
May 6, 2014, 5:06:29 AM5/6/14
to openerp-s...@googlegroups.com
Pon si no aquí el módulo entero en un zip, porque así no se puede ver el problema.

Un saludo.


Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

Joaquin Gutierrez

unread,
May 6, 2014, 5:09:40 AM5/6/14
to openerp-s...@googlegroups.com
Hola:

Es lo que comenta Pedro, quieres agregar campos al objeto sale.order del objeto x_ref.interna (x_paciente,x_name y x_autoriza). ¿Como has relacionado el objeto x_ref.interna con el objeto sale.order?

Un saludo


Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

Juan Sallent

unread,
May 6, 2014, 5:22:56 AM5/6/14
to openerp-s...@googlegroups.com
Hola Joaquin

He creado campo x_name en objeto sale.order ->

    Nombre 
    Etiqueta campo 
    Tipo de campo 
    Requerido
    Sólo lectura 
    Puede ser objeto de búsquedas 
    Tipo 
    amount_taxTaxesfloatNo puede ser buscadoCampo base
    amount_totalTotalfloatNo puede ser buscadoCampo base
    amount_untaxedUntaxed AmountfloatNo puede ser buscadoCampo base
    carrier_idDelivery Method
    many2oneNo puede ser buscado
    Campo base
    categ_idsCategoriesmany2manyNo puede ser buscadoCampo base
    client_order_refCustomer Reference
    charNo puede ser buscado
    Campo base
    commitment_dateCommitment Date
    dateNo puede ser buscado
    Campo base
    company_idCompany
    many2oneNo puede ser buscado
    Campo base
    create_dateCreation DatedatetimeCampo base
    currency_idCurrency
    many2oneNo puede ser buscado
    Campo base
    date_confirmConfirmation DatedateCampo base
    date_orderDatedateCampo base
    effective_dateEffective Date
    dateNo puede ser buscado
    Campo base
    fiscal_positionFiscal Position
    many2oneNo puede ser buscado
    Campo base
    incotermIncoterm
    many2oneNo puede ser buscado
    Campo base
    invoicedPaidbooleanNo puede ser buscadoCampo base
    invoiced_rateInvoiced RatiofloatNo puede ser buscadoCampo base
    invoice_existsInvoicedbooleanNo puede ser buscadoCampo base
    invoice_idsInvoicesmany2manyNo puede ser buscadoCampo base
    invoice_quantityInvoice on
    selectionNo puede ser buscado
    Campo base
    marginMarginfloatNo puede ser buscadoCampo base
    message_follower_idsFollowersmany2manyNo puede ser buscadoCampo base
    message_idsMessagesone2manyNo puede ser buscadoCampo base
    message_is_followerIs a FollowerbooleanNo puede ser buscadoCampo base
    message_summarySummary
    textNo puede ser buscado
    Campo base
    message_unreadUnread MessagesbooleanNo puede ser buscadoCampo base
    nameOrder ReferencecharCampo base
    noteTerms and conditions
    textNo puede ser buscado
    Campo base
    order_lineOrder Linesone2manyNo puede ser buscadoCampo base
    order_policyCreate Invoice
    selectionNo puede ser buscado
    Campo base
    originSource Document
    charNo puede ser buscado
    Campo base
    partner_bankBank Accountmany2oneCampo base
    partner_idCustomermany2oneCampo base
    partner_invoice_idInvoice Address
    many2oneNo puede ser buscado
    Campo base
    partner_shipping_idDelivery Address
    many2oneNo puede ser buscado
    Campo base
    payment_termPayment Term
    many2oneNo puede ser buscado
    Campo base
    payment_typePayment type
    many2oneNo puede ser buscado
    Campo base
    paypal_urlPaypal Url
    charNo puede ser buscado
    Campo base
    picked_ratePickedfloatNo puede ser buscadoCampo base
    picking_idsRelated Pickingone2manyNo puede ser buscadoCampo base
    picking_policyShipping Policy
    selectionNo puede ser buscado
    Campo base
    portal_payment_optionsPortal Payment OptionshtmlNo puede ser buscadoCampo base
    pricelist_idPricelist
    many2oneNo puede ser buscado
    Campo base
    project_idContract / Analytic
    many2oneNo puede ser buscado
    Campo base
    purchase_order_idPurchase Order
    many2oneNo puede ser buscado
    Campo base
    requested_dateRequested Date
    dateNo puede ser buscado
    Campo base
    section_idSales Team
    many2oneNo puede ser buscado
    Campo base
    shippedDeliveredbooleanNo puede ser buscadoCampo base
    shop_idShop
    many2oneNo puede ser buscado
    Campo base
    stateStatusselectionCampo base
    user_idSalespersonmany2oneCampo base
    x_autorizaAutorizacióncharNo puede ser buscadoCampo personalizado
    x_centroCentromany2oneNo puede ser buscadoCampo personalizado
    x_doctorDoctormany2oneNo puede ser buscadoCampo personalizado
    x_fec_operFecha OperacióndateNo puede ser buscadoCampo personalizado
    x_nameReferencia Interna/Cirugia:
    many2oneNo puede ser buscadoCampo personalizado


    x_nameCampo personalizado
    Referencia Interna/Cirugia:
    Propiedades
    many2one
    x_ref.interna
    0
    []
    No puede ser buscado
    Establecer a NULL
    Os adjunto ZIP del modulo sale

    Muchas gracias
    sale.zip

    Pedro Manuel Baeza Romero

    unread,
    May 6, 2014, 5:28:22 AM5/6/14
    to openerp-s...@googlegroups.com
    Anda, espera, no recordaba que los cambios los habías hecho sobre interfaz, no en un módulo, por lo que lo que has enviado no sirve de mucho.

    Te recomiendo que, aunque sea un poco más de trabajo, empieces desde 0, creando un módulo para la ocasión, siguiendo esta documentación:

    https://doc.openerp.com/6.1/developer/#book-develop-link

    Y de esa forma vayas construyendo de manera más ordenada las modificaciones, ya que ahora mismo el problema que te encuentras es muy difícil de diagnosticar si no.

    Un saludo.


    Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

    Juan Sallent

    unread,
    May 6, 2014, 5:48:29 AM5/6/14
    to openerp-s...@googlegroups.com
    Buenas Pedro

    Gracias por tu consejo, cuando tenga que crear otro objeto/tabla lo haré siguiendo la guía y crearé un módulo.

    Pero ahora mismo no puedo tirar atrás los cambios realizados en la interfaz. No faltará algo en la definición de los XML?...Parece como si no supiera el tipo de datos que intento informar.

       def onchange_cirugia_id(self, cr, uid, ids, x_name_id, context=None):
            val = {}
            if x_name_id:
    "            cirugia = self.pool.get('x_ref.interna').browse(cr, uid, x_name_id, context=context)
    "            val['x_paciente'] = cirugia.x_paciente and cirugia.x_paciente.id or False
    "            val['x_autoriza'] = cirugia.x_autoriza and cirugia.x_autoriza.id or False
                  val = {'x_paciente': '1','x_autoriza': '2'}
            return {'value': val}
        
    Error

    File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 187, in execute_cr
        return getattr(object, method)(cr, uid, *args, **kw)
      File "/usr/lib/pymodules/python2.7/openerp/addons/sale/sale.py", line 342, in onchange_cirugia_id
        val = {'x_paciente': '1','x_autoriza': '2'}
    TypeError: cannot concatenate 'str' and 'int' objects

    No tendré que definir los campos x_paciente y x_autoriza en algún sitio e indicar el tipo de datos?

    Muchas gracias

    Pedro Manuel Baeza Romero

    unread,
    May 6, 2014, 5:53:59 AM5/6/14
    to openerp-s...@googlegroups.com
    Es que ése es el problema, que seguramente esos datos no estén correctamente definidos en el interfaz, ni tampoco sé qué tipo de datos son (¿son un many2one a otro modelo?, ¿a cuál?, etc).

    Ya te digo que la opción más viable es que comiences de cero desde código, o bien contrates una asistencia/training para resolver todas esas dudas de manera más personalizada.

    Un saludo.

    Juan Sallent

    unread,
    May 6, 2014, 6:03:58 AM5/6/14
    to openerp-s...@googlegroups.com
    Buenas Pedro

    Agradecido por tus comentarios.

    Resumiendo el tema... 

    1) El nuevo objeto/tabla -> x_ref.interna tiene una serie de campos:
            x_paciente tipo char
            x_autoriza tipo char
    2) He creado varios campos en el objeto/tabla -> sale.order 
        x_name many2one (objeto relacion: x_ref.interna)
        x_paciente tipo char
        x_autoriza tipo char
        .. 
        ..

    3) Lo que quiero es que al relacionar el Pedido de Ventas con 1 registro x_ref.interna me traiga una serie de valores de x_ref.interna (x_paciente, x_autoriza...) y guardarlos en la tabla sale.order. Básicamente para luego disponer de ellos, filtros, agrupaciones y visibilidad en Reporting con OpenOffice....

    Espero haber explicado el modelo que necesito...

    Muchas gracias por tu tiempo.

    Juan



     

    Pedro Manuel Baeza Romero

    unread,
    May 6, 2014, 6:18:06 AM5/6/14
    to openerp-s...@googlegroups.com
    Buenas, Juan,

    Con esa explicación me queda más claro lo que estás intentando hacer, y aunque de nuevo te recomiendo que eso lo hagas desde cero en un módulo, ya que no es mucho lo que habría que programar, siguiendo con lo que has hecho, lo más sencillo es que coloques dos campos related en sale.order, haciendo referencia al nuevo modelo x_ref.interna mediante el campo x_name. Aquí tienes la documentación al respecto (busca el tipo de campo related):

    https://doc.openerp.com/6.0/developer/2_5_Objects_Fields_Methods/field_type/

    Un saludo.

    Juan Sallent

    unread,
    May 6, 2014, 6:49:42 AM5/6/14
    to openerp-s...@googlegroups.com
    Buenas Pedro

    Y como indico el tipo related en la tabla sale.order?



    No aparece el tipo related ?.... disculpa pero voy un poco perdido...

    Agradecido de todas formas.

    Juan

    Juan Sallent

    unread,
    May 6, 2014, 9:31:37 AM5/6/14
    to openerp-s...@googlegroups.com
    Buenas

    Siguiendo las indicaciones dadas por Pedro he intentado crear 1 campo en el objeto sale.order de tipo related

    El problema es que no aparece el tipo related ?.... disculpad pero voy un poco perdido...

    Según Pedro ... lo más sencillo es que coloques dos campos related en sale.order, haciendo referencia al nuevo modelo x_ref.interna mediante el campo x_name

    Cualquier ayuda será agradecida.

    Un saludo a todos

    Juan

    El martes, 6 de mayo de 2014 12:18:06 UTC+2, Pedro Manuel Baeza Romero escribió:
    Buenas, Juan,

    invoice_idsInvoices many2many<td style="p
    ...

    Roberto Lizana

    unread,
    May 6, 2014, 10:21:26 AM5/6/14
    to openerp-s...@googlegroups.com
    Juan, los campos de tipo "related" y "function" solo se pueden dar de alta desde programacion, como te comenta Pedro necesitas crear un modulo para crear estos campos.

    Un saludo,
    Roberto Lizana

    El 06/05/14 15:31, Juan Sallent escribió:
    --

    Juan Sallent

    unread,
    May 6, 2014, 7:03:09 PM5/6/14
    to openerp-s...@googlegroups.com
    Buenas Pedro

    Siguiendo tu consejo he creado campo x_paciente -> related en modulo sale.py

      _columns = {
            'name': fields.char('Order Reference', size=64, required=True,
                readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, select=True),
            'shop_id': fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
            'origin': fields.char('Source Document', size=64, help="Reference of the document that generated this sales order request."),
            'client_order_ref': fields.char('Customer Reference', size=64),
            'state': fields.selection([
                ('draft', 'Draft Quotation'),
                ('sent', 'Quotation Sent'),
                ('cancel', 'Cancelled'),
                ('waiting_date', 'Waiting Schedule'),
                ('progress', 'Sales Order'),
                ('manual', 'Sale to Invoice'),
                ('invoice_except', 'Invoice Exception'),
                ('done', 'Done'),
                ], 'Status', readonly=True, track_visibility='onchange',
                help="Gives the status of the quotation or sales order. \nThe exception status is automatically set when a cancel operation occurs in the processing of a document linked to the sales order. \nThe 'Waiting Schedule' status is set when the invoice is confirmed but waiting for the scheduler to run on the order date.", select=True),
            'date_order': fields.date('Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
            'create_date': fields.datetime('Creation Date', readonly=True, select=True, help="Date on which sales order is created."),
            'date_confirm': fields.date('Confirmation Date', readonly=True, select=True, help="Date on which sales order is confirmed."),
            'user_id': fields.many2one('res.users', 'Salesperson', states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, select=True, track_visibility='onchange'),
            'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, required=True, change_default=True, select=True, track_visibility='always'),
            'partner_invoice_id': fields.many2one('res.partner', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Invoice address for current sales order."),
            'partner_shipping_id': fields.many2one('res.partner', 'Delivery Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Delivery address for current sales order."),
            'order_policy': fields.selection([
                    ('manual', 'On Demand'),
                ], 'Create Invoice', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]},
                help="""This field controls how invoice and delivery operations are synchronized."""),
            'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Pricelist for current sales order."),
            'currency_id': fields.related('pricelist_id', 'currency_id', type="many2one", relation="res.currency", string="Currency", readonly=True, required=True),
            'project_id': fields.many2one('account.analytic.account', 'Contract / Analytic', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="The analytic account related to a sales order."),

            'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
            'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoices', readonly=True, help="This is the list of invoices that have been generated for this sales order. The same sales order may have been invoiced in several times (by line for example)."),
            'invoiced_rate': fields.function(_invoiced_rate, string='Invoiced Ratio', type='float'),
            'invoiced': fields.function(_invoiced, string='Paid',
                fnct_search=_invoiced_search, type='boolean', help="It indicates that an invoice has been paid."),
            'invoice_exists': fields.function(_invoice_exists, string='Invoiced',
                fnct_search=_invoiced_search, type='boolean', help="It indicates that sales order has at least one invoice."),
            'note': fields.text('Terms and conditions'),

            'amount_untaxed': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Untaxed Amount',
                store={
                    'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
                    'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
                },
                multi='sums', help="The amount without tax.", track_visibility='always'),
            'amount_tax': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Taxes',
                store={
                    'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
                    'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
                },
                multi='sums', help="The tax amount."),
            'amount_total': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Total',
                store={
                    'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
                    'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
                },
                multi='sums', help="The total amount."),

            'invoice_quantity': fields.selection([('order', 'Ordered Quantities')], 'Invoice on', help="The sales order will automatically create the invoice proposition (draft invoice).", required=True, readonly=True, states={'draft': [('readonly', False)]}),
            'payment_term': fields.many2one('account.payment.term', 'Payment Term'),
            'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position'),
            'company_id': fields.related('shop_id','company_id',type='many2one',relation='res.company',string='Company',store=True,readonly=True),
            'x_paciente': fields.related('x_name','x_paciente',type='many2one',relation='x_ref.interna',string='Paciente',store=True,readonly=True),
        }

    Luego rearrancamos servidor y el LOG no da ninguna informacion?

    2014-05-06 22:58:52,760 16127 INFO IQPROD openerp.service.web_services: successful login from 'admin' using database 'iqprod'
    2014-05-06 22:58:52,762 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:52] "POST /web/session/get_session_info HTTP/1.1" 200 -
    2014-05-06 22:58:52,806 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:52] "POST /web/webclient/qweblist HTTP/1.1" 200 -
    2014-05-06 22:58:52,878 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:52] "POST /web/proxy/load HTTP/1.1" 200 -
    2014-05-06 22:58:53,101 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/session/modules HTTP/1.1" 200 -
    2014-05-06 22:58:53,136 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/webclient/translations HTTP/1.1" 200 -
    2014-05-06 22:58:53,163 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "GET /web/binary/company_logo?session_id=ad48c4aa34644ada9497ef90a0790158 HTTP/1.1" 200 -
    2014-05-06 22:58:53,213 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,251 16127 INFO ? werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "GET /web/static/src/font/entypo-webfont.ttf HTTP/1.1" 304 -
    2014-05-06 22:58:53,279 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "GET /web/binary/image?model=res.users&field=image_small&id=1&session_id=ad48c4aa34644ada9497ef90a0790158 HTTP/1.1" 304 -
    2014-05-06 22:58:53,281 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,287 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,292 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/action/load HTTP/1.1" 200 -
    2014-05-06 22:58:53,324 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/search_read HTTP/1.1" 200 -
    2014-05-06 22:58:53,335 16127 INFO ? werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "GET /web/static/src/font/mnmliconsv21-webfont.ttf HTTP/1.1" 304 -
    2014-05-06 22:58:53,381 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,435 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,455 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,486 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,514 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,539 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,627 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/menu/load HTTP/1.1" 200 -
    2014-05-06 22:58:53,707 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:53,857 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:53] "POST /web/dataset/search_read HTTP/1.1" 200 -
    2014-05-06 22:58:54,041 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/menu/load_needaction HTTP/1.1" 200 -
    2014-05-06 22:58:54,072 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,480 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,551 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,623 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,704 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,756 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,835 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,854 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,897 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,948 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,953 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:54,996 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:54] "POST /web/dataset/search_read HTTP/1.1" 200 -
    2014-05-06 22:58:55,020 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:55] "POST /web/dataset/search_read HTTP/1.1" 200 -
    2014-05-06 22:58:55,022 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:55] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:55,022 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:55] "POST /web/dataset/search_read HTTP/1.1" 200 -
    2014-05-06 22:58:55,024 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:55] "POST /web/dataset/search_read HTTP/1.1" 200 -
    2014-05-06 22:58:57,689 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:57] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:58,713 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:58] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:58,721 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:58] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:58,754 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:58] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:58,782 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:58] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:58,784 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:58] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:58:58,846 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:58:58] "POST /web/dataset/call_kw HTTP/1.1" 200 -
    2014-05-06 22:59:02,322 16127 INFO IQPROD werkzeug: 178.33.164.134 - - [06/May/2014 22:59:02] "POST /web/dataset/call_kw HTTP/1.1" 200 -

    Alguna aportación?...me he dejado algo?

    Muchísimas gracias por vuestra aportación.
    Un saludo
    Juan

    El martes, 6 de mayo de 2014 12:18:06 UTC+2, Pedro Manuel Baeza Romero escribió:
    Buenas, Juan,

    invoice_idsInvoices many2many<td style="p
    ...

    Roberto Lizana

    unread,
    May 6, 2014, 7:29:49 PM5/6/14
    to openerp-s...@googlegroups.com
    Juan, tienes que actualizar el modulo para que se apliquen los cambios
    date_orderDate date <td style="padding:3px 6px;vertical-align:top;
    ...
    Reply all
    Reply to author
    Forward
    0 new messages