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.