diff --git a/lims_management/models/__pycache__/stock_lot.cpython-312.pyc b/lims_management/models/__pycache__/stock_lot.cpython-312.pyc index 5e39c5f..94794ea 100644 Binary files a/lims_management/models/__pycache__/stock_lot.cpython-312.pyc and b/lims_management/models/__pycache__/stock_lot.cpython-312.pyc differ diff --git a/lims_management/models/sale_order.py b/lims_management/models/sale_order.py index 61c6558..2865e4d 100644 --- a/lims_management/models/sale_order.py +++ b/lims_management/models/sale_order.py @@ -33,6 +33,31 @@ class SaleOrder(models.Model): help="Muestras de laboratorio generadas automáticamente cuando se confirmó esta orden" ) + all_sample_ids = fields.Many2many( + 'stock.lot', + string='Todas las Muestras (inc. Re-muestras)', + compute='_compute_all_samples', + help="Todas las muestras relacionadas con esta orden, incluyendo re-muestras" + ) + + @api.depends('generated_sample_ids', 'generated_sample_ids.child_sample_ids') + def _compute_all_samples(self): + """Compute all samples including resamples""" + for order in self: + all_samples = order.generated_sample_ids + # Add all resamples recursively + resamples = self.env['stock.lot'] + for sample in order.generated_sample_ids: + resamples |= self._get_all_resamples(sample) + order.all_sample_ids = all_samples | resamples + + def _get_all_resamples(self, sample): + """Recursively get all resamples of a sample""" + resamples = sample.child_sample_ids + for resample in sample.child_sample_ids: + resamples |= self._get_all_resamples(resample) + return resamples + def action_confirm(self): """Override to generate laboratory samples and tests automatically""" res = super(SaleOrder, self).action_confirm() diff --git a/lims_management/views/sale_order_views.xml b/lims_management/views/sale_order_views.xml index b2b5020..5848844 100644 --- a/lims_management/views/sale_order_views.xml +++ b/lims_management/views/sale_order_views.xml @@ -29,26 +29,42 @@ - - - - + + + + - + - - - + + + + + +