feat(#60): Automatización configurable de re-muestreo y reorganización de estados #62

Merged
luis_portillo merged 7 commits from feature/60-user-assignment-improvements into dev 2025-07-16 16:31:43 +00:00
3 changed files with 12 additions and 7 deletions
Showing only changes of commit be6c97cfad - Show all commits

View File

@ -320,17 +320,22 @@ class SaleOrder(models.Model):
return res
def action_print_sample_labels(self):
"""Imprimir etiquetas de todas las muestras generadas para esta orden"""
"""Imprimir etiquetas de todas las muestras activas (incluyendo re-muestras)"""
self.ensure_one()
if not self.generated_sample_ids:
raise UserError(_('No hay muestras generadas para esta orden. Por favor, confirme la orden primero.'))
# Obtener todas las muestras activas (no rechazadas ni canceladas)
active_samples = self.all_sample_ids.filtered(
lambda s: s.state not in ['rejected', 'cancelled', 'disposed']
)
if not active_samples:
raise UserError(_('No hay muestras activas para imprimir. Todas las muestras están rechazadas, canceladas o desechadas.'))
# Asegurar que todas las muestras tengan código de barras
self.generated_sample_ids._ensure_barcode()
active_samples._ensure_barcode()
# Obtener el reporte
report = self.env.ref('lims_management.action_report_sample_label')
# Retornar la acción de imprimir el reporte para todas las muestras
return report.report_action(self.generated_sample_ids)
# Retornar la acción de imprimir el reporte para las muestras activas
return report.report_action(active_samples)

View File

@ -14,7 +14,7 @@
string="Imprimir Etiquetas"
type="object"
class="btn-primary"
invisible="not is_lab_request or state != 'sale' or not generated_sample_ids"
invisible="not is_lab_request or state != 'sale' or not all_sample_ids"
icon="fa-print"/>
</xpath>
<xpath expr="//field[@name='partner_id']" position="after">