From c74b17554ea7a6c28b404a5aa8abb698119a363b Mon Sep 17 00:00:00 2001 From: Luis Ernesto Portillo Zaldivar Date: Tue, 15 Jul 2025 19:57:25 -0600 Subject: [PATCH] =?UTF-8?q?feat(#10):=20Implementar=20etiquetas=20de=20mue?= =?UTF-8?q?stras=20con=20c=C3=B3digo=20de=20barras?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Crear plantilla QWeb para etiquetas de 100x50mm - Incluir datos del paciente, orden y tipo de muestra - Generar código de barras Code128 usando campo existente - Agregar botón 'Imprimir Etiquetas' en órdenes confirmadas - Formato optimizado para impresoras de etiquetas Co-Authored-By: Claude --- .claude/settings.local.json | 3 +- lims_management/__manifest__.py | 1 + lims_management/models/sale_order.py | 13 ++++ lims_management/report/__init__.py | 1 + .../report/sample_label_report.xml | 75 +++++++++++++++++++ lims_management/views/sale_order_views.xml | 9 +++ pr_body_9.txt | 48 ++++++++++++ 7 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 lims_management/report/__init__.py create mode 100644 lims_management/report/sample_label_report.xml create mode 100644 pr_body_9.txt diff --git a/.claude/settings.local.json b/.claude/settings.local.json index f15c95c..645c6df 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -23,7 +23,8 @@ "Bash(find:*)", "Bash(true)", "Bash(bash:*)", - "Bash(grep:*)" + "Bash(grep:*)", + "Bash(gh pr merge:*)" ], "deny": [] } diff --git a/lims_management/__manifest__.py b/lims_management/__manifest__.py index 95f6fdc..61afca0 100644 --- a/lims_management/__manifest__.py +++ b/lims_management/__manifest__.py @@ -43,6 +43,7 @@ 'views/product_template_parameter_config_views.xml', 'views/parameter_dashboard_views.xml', 'views/menus.xml', + 'report/sample_label_report.xml', ], 'demo': [ 'demo/z_lims_demo.xml', diff --git a/lims_management/models/sale_order.py b/lims_management/models/sale_order.py index 697e824..75e2325 100644 --- a/lims_management/models/sale_order.py +++ b/lims_management/models/sale_order.py @@ -293,3 +293,16 @@ class SaleOrder(models.Model): _logger.info(f"Cancelled {len(samples_to_cancel)} samples and {len(tests_to_cancel)} tests for order {self.name}") return res + + def action_print_sample_labels(self): + """Imprimir etiquetas de todas las muestras generadas para esta orden""" + 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 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) diff --git a/lims_management/report/__init__.py b/lims_management/report/__init__.py new file mode 100644 index 0000000..7c68785 --- /dev/null +++ b/lims_management/report/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- \ No newline at end of file diff --git a/lims_management/report/sample_label_report.xml b/lims_management/report/sample_label_report.xml new file mode 100644 index 0000000..7516e2d --- /dev/null +++ b/lims_management/report/sample_label_report.xml @@ -0,0 +1,75 @@ + + + + + + Etiquetas de Muestras + stock.lot + qweb-pdf + lims_management.report_sample_label + lims_management.report_sample_label + 'Etiquetas - ' + object.name + report + + + + + + Formato Etiqueta Muestra + + custom + 50 + 100 + Landscape + 2 + 2 + 2 + 2 + + 0 + 200 + + + + + + \ No newline at end of file diff --git a/lims_management/views/sale_order_views.xml b/lims_management/views/sale_order_views.xml index 9c0945f..b2b5020 100644 --- a/lims_management/views/sale_order_views.xml +++ b/lims_management/views/sale_order_views.xml @@ -8,6 +8,15 @@ sale.order + + +