search_barcode_picking.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, api, _
  3. from openerp.exceptions import Warning as UserError
  4. class Search_Barcode_Picking(models.TransientModel):
  5. _name = 'search.barcode.picking'
  6. _description = 'Buscar Producto por Codigo de Barra en Compras'
  7. quantity = fields.Float('Quantity', default='1.0')
  8. products_ids = fields.Many2many( 'product.product',
  9. string='Products',
  10. domain=[('sale_ok', '=', True)], )
  11. # product_code = fields.Char( string='Codigo de Barra EAN13 ',
  12. # help="Este campo está diseñado para ser llenado con un lector de código de barras")
  13. # @api.onchange('product_code')
  14. # def product_code_change(self):
  15. # if self.product_code:
  16. # products = self.env['product.product'].search([
  17. # '|', ('ean13', '=', self.product_code), ('default_code', '=ilike', self.product_code)])
  18. #
  19. # if len(products) == 1:
  20. # self.products_ids += products[0]
  21. # self.product_code =None
  22. #
  23. # elif len(products) > 1:
  24. # self.product_code =None
  25. # return {'warning': {
  26. # 'title': _('Error'),
  27. # 'message': _(
  28. # 'Varios productos se han encontrado con el código (EAN 13) ingresado,'
  29. # '\nDebe seleccionar el producto manualmente.')}}
  30. # else:
  31. # self.product_code =None
  32. # return {'warning': {
  33. # 'title': _('Error'),
  34. # 'message': _(
  35. # 'Ningún producto encontrado con el código (EAN 13) ingresado, Debe seleccionar el producto manualmente')}}
  36. @api.one
  37. def add_multiple(self):
  38. active_id = self._context['active_id']
  39. stock_transfer = self.env['stock.warehouse.transfer'].browse(active_id)
  40. for product_id in self.products_ids:
  41. xxproducts = self.env['product.product'].search([('id', '=', product_id.id)])
  42. orde_line_datos = self.env['stock.warehouse.transfer.line'].search([('transfer', '=', stock_transfer.id), ('product_id', "=", xxproducts.id)])
  43. product = self.env['stock.warehouse.transfer.line'].product_id_change(
  44. product_id.id,
  45. qty=self.quantity)
  46. if orde_line_datos:
  47. orde_line_datos.write({ 'product_qty' : (orde_line_datos.product_qty + 1)})
  48. else:
  49. val = {
  50. 'product_id': product_id.id or False,
  51. 'product_qty': self.quantity,
  52. 'product_uom_id': product_id.uom_po_id.id,
  53. 'transfer': active_id,
  54. }
  55. self.env['stock.warehouse.transfer.line'].create(val)