Campo Obligatorio

541 views
Skip to first unread message

Martin Mendoza del solar

unread,
Oct 3, 2012, 10:37:40 PM10/3/12
to opener...@googlegroups.com
Buenas noches, tal vez alguien me pueda ayudar?, necesito hacer que un campo sea obligatorio dependiendo el estado en el que se encuentra el pedido. Por ejemplo:

Cuando hago una solicitud de presupuesto, tengo un campo que es "Factura", que si puedo ponerla como obligatorio. El detalle es que quiero que SOLO sea obligatorio, una vez que se aprobo la solicitud, y esta en el estado "Aprobado".

Como lo puedo hacer?.


Muchas gracias,
--
Martin Mendoza del Solar


Pepe Balbuena

unread,
Oct 4, 2012, 12:07:32 AM10/4/12
to opener...@googlegroups.com
Hola Martin,

No lo he probado con state pero si con readonly; prueba con esto y me comentas si lo soluciona.

+En la definicion de la clase(.py) al campo(atributo) NO le pongas required=True
+En el archivo .xml de la vista FORM al campo le pones: <field name="factura" attrs="{'required':[('state','=','aprobado')]}"/>

Mañana lo probaré.
Saludos

José Balbuena A.
Gerente General
TelFast S.A.C.
720-1919 / 952-322-480
wwww.openerpperu.com

Martin Mendoza del Solar

unread,
Oct 4, 2012, 12:50:52 AM10/4/12
to opener...@googlegroups.com
Hola José, si funciono con esto:

attrs="{'required':[('state','=','approved')]}"

Pero ahora, cuando pasa al estado "approved", el campo se pone solo de lectura. Estuve revisando y tiene el modificador "readonly..." con los estados, pero eso no esta en la vista del FORM:

<field name="partner_ref" attrs="{'required':[('state','=','approved')]}"></field>


Inline image 1




Donde puedo modificar eso del "readonly"?.


Gracias,


2012/10/3 Pepe Balbuena <pepeba...@gmail.com>

--
Para publicar un anuncio, envía un correo a opener...@googlegroups.com.
Comunidad OpenERP Perú - Consultores y Usuarios http://openerp.pe



--
Martin Mendoza del Solar
Of:  (01) - 222-5757
Cel: 99792-0109
Dir: Av. La mar 390, Miraflores.
Para promociones, concursos e información exclusiva:

image.png

Pepe Balbuena

unread,
Oct 4, 2012, 1:29:29 AM10/4/12
to opener...@googlegroups.com
Excelente, una mas para el libro ;)

Es correcto que cuando una orden de compra es aprobada los campos cambian a solo lectura para que no puedan ser modificados.
Si necesitas cambiar la funcionalidad, eso lo encuentras mayormente en los archivos .py.; porque es normalmente ahí donde se controla el readonly.

Por la imagen que has pegado debe ser el purchase.py, dentro de la clase purchase.order busca el campo 'partner_ref' y ahi encontraras readonly=..........
Yo estoy usando la version 6.0.4 y esto es lo que hay en el archivo purchase.py, te guío un poco:

class purchase_order(osv.osv):
...
...
...
      _columns = {
...
...
...
     'partner_ref': fields.char('Supplier Reference', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, size=64),

Entonces antes que nada y como consejo para que tengas referencia de lo estaba inicialmente copia toda la linea igual abajo y la comentas con #

Quedaria:
     'partner_ref': fields.char('Supplier Reference', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, size=64),
#     'partner_ref': fields.char('Supplier Reference', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, size=64),

Luego a la linea que no tiene # borrale el estado en el que no quieres que se ponga en solo lectura, ej:
     'partner_ref': fields.char('Supplier Reference', states={'done':[('readonly',True)]}, size=64),
Con esto solo se va a poner en solo lectura una vez q este en el estado 'done'

Ahora para q se haga efectivo el cambio en un archivo .py debes:
Paso 0- Grabar el archivo
Paso 1- Borrar el archivo compilado purchase.pyc , OJO el ".pyc" solamente
Paso 2- Reiniciar el servidor de openerp
Paso 3- Ingresa a OpenERP o sea Loggin
Paso 4- Y en Administración/Modulos filtras por instalados, le das doble click a purchase y le das Actualizar

Con eso debe estar listo.

Ojo que si cometes error de sintaxis en el python, a la hora de tratar de ingresar a la base de datos nuevamente (Paso 3) va a dar error y no vas a poder ingresar, si pasa eso, revisas bien la sintaxis, caso contrario regresar a como estaba inicialmente comentando tu linea con #, descomentas la linea original y repites los pasos del 0 al 4 para regresar a la normalidad.

Me comentas como te fue.

Saludos

José Balbuena A.
Gerente General
TelFast S.A.C.
720-1919 / 952-322-480
wwww.openerpperu.com

Reply all
Reply to author
Forward
0 new messages