fix(#10): Corregir generación de código de barras en etiquetas
- Agregar método _ensure_barcode() para generar códigos faltantes - Llamar _ensure_barcode() antes de imprimir etiquetas - Usar name del lote como fallback si no hay barcode - Manejar casos donde el campo barcode está vacío Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
4b27b34189
commit
2c76b97402
|
@ -301,6 +301,9 @@ class SaleOrder(models.Model):
|
||||||
if not self.generated_sample_ids:
|
if not self.generated_sample_ids:
|
||||||
raise UserError(_('No hay muestras generadas para esta orden. Por favor, confirme la orden primero.'))
|
raise UserError(_('No hay muestras generadas para esta orden. Por favor, confirme la orden primero.'))
|
||||||
|
|
||||||
|
# Asegurar que todas las muestras tengan código de barras
|
||||||
|
self.generated_sample_ids._ensure_barcode()
|
||||||
|
|
||||||
# Obtener el reporte
|
# Obtener el reporte
|
||||||
report = self.env.ref('lims_management.action_report_sample_label')
|
report = self.env.ref('lims_management.action_report_sample_label')
|
||||||
|
|
||||||
|
|
|
@ -229,3 +229,10 @@ class StockLot(models.Model):
|
||||||
even_sum = sum([sum(divmod(2 * d, 10)) for d in digits[-2::-2]])
|
even_sum = sum([sum(divmod(2 * d, 10)) for d in digits[-2::-2]])
|
||||||
total = odd_sum + even_sum
|
total = odd_sum + even_sum
|
||||||
return (10 - (total % 10)) % 10
|
return (10 - (total % 10)) % 10
|
||||||
|
|
||||||
|
def _ensure_barcode(self):
|
||||||
|
"""Ensure all lab samples have a barcode"""
|
||||||
|
for record in self:
|
||||||
|
if record.is_lab_sample and not record.barcode:
|
||||||
|
record.barcode = record._generate_unique_barcode()
|
||||||
|
return True
|
||||||
|
|
|
@ -58,8 +58,15 @@
|
||||||
|
|
||||||
<!-- Código de barras -->
|
<!-- Código de barras -->
|
||||||
<div style="text-align: center; margin-top: 3mm;">
|
<div style="text-align: center; margin-top: 3mm;">
|
||||||
<img t-att-src="'/report/barcode/?barcode_type=%s&value=%s&width=%s&height=%s&humanreadable=%s' % ('Code128', o.barcode, 250, 60, 1)"
|
<t t-if="o.barcode">
|
||||||
style="width: 250px; height: 60px;"/>
|
<img t-att-src="'/report/barcode/?barcode_type=%s&value=%s&width=%s&height=%s&humanreadable=%s' % ('Code128', o.barcode, 250, 60, 1)"
|
||||||
|
style="width: 250px; height: 60px;"/>
|
||||||
|
</t>
|
||||||
|
<t t-else="">
|
||||||
|
<!-- Si no hay barcode, usar el name del lote -->
|
||||||
|
<img t-att-src="'/report/barcode/?barcode_type=%s&value=%s&width=%s&height=%s&humanreadable=%s' % ('Code128', o.name, 250, 60, 1)"
|
||||||
|
style="width: 250px; height: 60px;"/>
|
||||||
|
</t>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Análisis a realizar (si caben) -->
|
<!-- Análisis a realizar (si caben) -->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user