diff --git a/lims_management/models/__pycache__/sale_order.cpython-312.pyc b/lims_management/models/__pycache__/sale_order.cpython-312.pyc index 7492287..c909f78 100644 Binary files a/lims_management/models/__pycache__/sale_order.cpython-312.pyc and b/lims_management/models/__pycache__/sale_order.cpython-312.pyc differ diff --git a/lims_management/models/sale_order.py b/lims_management/models/sale_order.py index 2865e4d..4e4bea2 100644 --- a/lims_management/models/sale_order.py +++ b/lims_management/models/sale_order.py @@ -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) diff --git a/lims_management/views/sale_order_views.xml b/lims_management/views/sale_order_views.xml index 5848844..58ee2cd 100644 --- a/lims_management/views/sale_order_views.xml +++ b/lims_management/views/sale_order_views.xml @@ -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"/>