Barcode cod128 en picking

254 views
Skip to first unread message

David Hernández

unread,
Aug 18, 2015, 9:23:12 AM8/18/15
to Usuarios Odoo / OpenERP en España
Hola, estoy mirando de introducir un codigo de barras en el picking list. 

He probado con el módulo


Segun la documentación para añadir el codigo debería poner algo así:

${helper.barcode(picking.name)} o ${helper.barcode(picking.name, code='EAN13', drawOpts=None, htmlAttrs=None)} , etc si quiero otro tipo de código, el caso es que con el por defecto, que es COD128, el reporte me sale con el código en bruto, es decir, no me le pinta correctamente, en concreto sale:

<img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAAASCAIAAAAmDjziAAAA5ElEQVR4nO3QIY6GMBCG4S8rMRhM&#10;z8ENMBgUpgZTU11Tg0HV1DQhJcWjMSg0h  .....


Alguno de vosotros se ha encontrado con el mismo problema?.

También he probado poner directamente la fuente cod128:

        @font-face
{
    font-family: barcode;
    src: url(/opt/odoo/custom/code128.ttf);
}

/* Use the new font in a css class */
.barcode-class
{
    font-family: barcode;
    font-size: 100px;
    padding:3px;
    margin-bottom: 10px;

}

y imprimirla como:

<div class="barcode-class">${picking.name or ''}</div>

pero el lector no reconoce el código


He intentado utilizar también  https://github.com/OCA/stock-logistics-barcode/tree/7.0/tr_barcode_on_picking  , pero directamente este módulo al validar la órden de venta ya me salta este error y no he podido probarlo:


2015-08-18 13:18:30,033 3230 ERROR ERP_BACK_1 openerp.netsvc: 'NoneType' object has no attribute 'get'
Traceback (most recent call last):
  File "/opt/odoo/odoo-server/openerp/netsvc.py", line 296, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/opt/odoo/odoo-server/openerp/service/web_services.py", line 632, in dispatch
    res = fn(db, uid, *params)
  File "/opt/odoo/odoo-server/openerp/osv/osv.py", line 193, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/opt/odoo/odoo-server/openerp/osv/osv.py", line 133, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/opt/odoo/odoo-server/openerp/osv/osv.py", line 202, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/opt/odoo/odoo-server/openerp/osv/osv.py", line 190, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/opt/odoo/custom/addons/magento/sale-wkfl/sale_exceptions/sale.py", line 159, in action_button_confirm
    cr, uid, ids, context=context)
  File "/opt/odoo/odoo-server/addons/sale/sale.py", line 583, in action_button_confirm
    wf_service.trg_validate(uid, 'sale.order', ids[0], 'order_confirm', cr)
  File "/opt/odoo/odoo-server/openerp/workflow/wkf_service.py", line 119, in trg_validate
    res2 = instance.validate(cr, id, ident, signal)
  File "/opt/odoo/odoo-server/openerp/workflow/instance.py", line 43, in validate
    workitem.process(cr, witem, ident, signal, force_running, stack=stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 60, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 175, in _split_test
    _join_test(cr, t[0], t[1], ident, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 183, in _join_test
    create(cr,[activity], inst_id, ident, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 40, in create
    process(cr, res, ident, stack=stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 60, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 175, in _split_test
    _join_test(cr, t[0], t[1], ident, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 183, in _join_test
    create(cr,[activity], inst_id, ident, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 40, in create
    process(cr, res, ident, stack=stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 60, in process
    ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 175, in _split_test
    _join_test(cr, t[0], t[1], ident, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 183, in _join_test
    create(cr,[activity], inst_id, ident, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 40, in create
    process(cr, res, ident, stack=stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 52, in process
    result = _execute(cr, workitem, activity, ident, stack)
  File "/opt/odoo/odoo-server/openerp/workflow/workitem.py", line 106, in _execute
    returned_action = wkf_expr.execute(cr, ident, workitem, activity)
  File "/opt/odoo/odoo-server/openerp/workflow/wkf_expr.py", line 67, in execute
    return _eval_expr(cr, ident, workitem, activity['action'])
  File "/opt/odoo/odoo-server/openerp/workflow/wkf_expr.py", line 57, in _eval_expr
    ret = eval(line, env, nocopy=True)
  File "/opt/odoo/odoo-server/openerp/tools/safe_eval.py", line 288, in safe_eval
    return eval(test_expr(expr, _SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
  File "", line 1, in <module>
  File "/opt/odoo/odoo-server/openerp/osv/orm.py", line 378, in function_proxy
    return attr(self._cr, self._uid, [self._id], *args, **kwargs)
  File "/opt/odoo/odoo-server/addons/sale_stock/sale_stock.py", line 455, in action_ship_create
    self._create_pickings_and_procurements(cr, uid, order, order.order_line, None, context=context)
  File "/opt/odoo/odoo-server/addons/sale_stock/sale_stock.py", line 423, in _create_pickings_and_procurements
    picking_id = picking_obj.create(cr, uid, self._prepare_order_picking(cr, uid, order, context=context))
  File "/opt/odoo/custom/addons/extras/stock-logistics-barcode/tr_barcode_config/barcode/barcode_osv.py", line 123, in create
    self._name, context=context)
  File "/opt/odoo/custom/addons/extras/stock-logistics-barcode/tr_barcode_config/barcode/barcode_osv.py", line 67, in create_barcode
    if not context.get('__copy_data_seen'):
AttributeError: 'NoneType' object has no attribute 'get'



Como hago para imprimir el cod128???  

Gracias.



Dunkel Meister

unread,
Mar 30, 2016, 2:45:46 PM3/30/16
to Usuarios Odoo / OpenERP en España
Hola que tal, pudiste resolver el problema?... estoy en un caso similar....

Dunkel Meister

unread,
Mar 30, 2016, 6:59:44 PM3/30/16
to Usuarios Odoo / OpenERP en España
Bueno después buscarle un poco al código actualizo y comento como lo pude solucionar yo...
en la función barcode de helper_barcode.py del modulo Webkit Report Barcode

en lugar de devolver la etiqueta html, le dije que sólo devolviera la imagen ya decodificada a 'base64'

        data = createBarcodeDrawing(code, **drawOpts).asString(imgtype)
#        attrs['src'] = "data:image/{1};base64,{0}".format(
#            data.encode('base64'), imgtype,
#        )
#        return HTML(Element('img', attrs))        
       
return data.encode('base64')


así en el reporte, primero recibo a una variable la imagen decodificada, y luego la agrego con helper.embed_image

    <% code_bar =helper.barcode(o.alpha_ref,drawOpts={'height':70,'width':300})%>
       ${helper.embed_image('jpg',code_bar)}

espero que a alguien que esté en un problema similar le sirva.



El martes, 18 de agosto de 2015, 8:23:12 (UTC-5), David Hernández escribió:
Reply all
Reply to author
Forward
0 new messages