he revisado documnetacion para corregir un campo debido a la necesidad de que en la propiedad stone=False me muestra datos de determinado campo en este caso campo 'carga' originalmente este campo tiene fecha y se podria filtrar por la misma para acomodo de la informacion de los viajes, se pidio que agregara hora patio y hora carga entones muestra 3 datos, pero no esta activo el filtro a raiz de este cambio revisando el codigo
carga_info = fields.Html(string='Programación Carga', compute='_compute_carga_info', store=False )
si cambio a True si aparece el filtro pero ya no me manda los datos en la vista o sea manda el campo vacio solo ese, leyendo y haciendo pruebas trato de entender del por que no lo hace, puedeser que write no recalcule archivos viejos, no recalcule compute almacnados o sea el cmpo existe, el filtro si aparece, los datos siguen vacios solo si colvemos stone a True, descubri que write maneja what app para notificaciones, maneja cambios de estado y guarda los logs vi una linea
# Guarda en BD
res = super(LogisticaOperacion, self).write(vals)
OTRA COSA QUE he revisado es que en odoo los cmpos 'compute' y 'store=True' no llenan con write (), se llenan en automatico con @api.depends; 'write()' no es la solucion correcta para este caso donde se pretende que ese campo muestre los datos y se pueda filtrar por fecha
y otra cosa depsues de mover stone a True modificar el @api.depends aacrualiar repo no hace nada
fragmento donde se ve write
def write(self, vals):
if 'estatus_mv' in vals:
vals['last_whatsapp_update'] = fields.Datetime.now()
if 'mensaje_formateado' in vals and len(vals) == 1:
return super(LogisticaOperacion, self).write(vals)
estatus_anterior_map = {}
if 'state' in vals:
for operacion in self:
estatus_anterior_map[operacion.id] = operacion._get_state_label(operacion.state)
# Guarda en BD
res = super(LogisticaOperacion, self).write(vals)
if 'state' in vals:
estatus_nuevo_label = self._get_state_label(vals['state'])
for operacion in self:
if operacion.id in estatus_anterior_map:
self.env['logistica.operacion.log'].create({
'operacion_id': operacion.id,
'fecha': fields.Datetime.now(),
'estatus_anterior': estatus_anterior_map[operacion.id],
'estatus_nuevo': estatus_nuevo_label,
'usuario_id': self.env.user.id,
})
# LOGISTICA: recompute carga_info para permitir filtros
if any(k in vals for k in [
'fecha_de_carga',
'cita_en_patio',
'cita_de_carga',
]):
self._compute_carga_info()
return res
fragmento de comoe sta @api.depends
@api.depends('fecha_de_carga', 'cita_en_patio', 'cita_de_carga')
def _compute_carga_info(self):
for record in self:
info = []
if record.fecha_de_carga:
info.append(record.fecha_de_carga.strftime('%d/%m/%Y'))
if record.cita_en_patio or record.cita_en_patio == 0:
hours = int(record.cita_en_patio)
minutes = int((record.cita_en_patio * 60) % 60)
info.append(f"Patio: {hours:02d}:{minutes:02d}")
if record.cita_de_carga or record.cita_de_carga == 0:
hours = int(record.cita_de_carga)
minutes = int((record.cita_de_carga * 60) % 60)
info.append(f"Carga: {hours:02d}:{minutes:02d}")
record.carga_info = "<br/>".join(info)
lo que solicito es rero de como solucionar esta parte para poder tener el filtro de ese campo 'carga' o que muestre los datos que solicitan espero haberme explicado