Ir al contenido
Menú
Se marcó esta pregunta
4 Respuestas
5677 Vistas

By default Odoo adds Product-Title and Product-Description to the Invoice order.line Description.

I would like to have it slightly different:

Product Title (aka name) Product-Variants (p.ex. red, size L and so on...)

Like:
Nike Shirt (Red, XL)

How do i do that? I found a module that comes close, but somehow i'm Stuck! https://www.odoo.com/apps/modules/8.0/account_invoice_line_description/

Here is the relevant code from the module i found - It adds only the Product Description to the order.line.description --> So changing that to product title and Variants should not be that hard... should... i need help.



class AccountInvoiceLine(models.Model):
_inherit = "account.invoice.line"

@api.multi
def product_id_change(
self, product, uom_id, qty=0, name='', type='out_invoice',
partner_id=False, fposition_id=False, price_unit=False,
currency_id=False, company_id=None
):
res = super(AccountInvoiceLine, self).product_id_change(
product, uom_id, qty=qty,
name=name, type=type, partner_id=partner_id,
fposition_id=fposition_id, price_unit=price_unit,
currency_id=currency_id, company_id=company_id
)
if product:
if self.user_has_groups(
'account_invoice_line_description.'
'group_use_product_description_per_inv_line',
):
product = self.env['product.product'].browse(product)
if product.description:
if 'value' not in res:
res['value'] = {}
res['value']['name'] = product.description
return res


Thank you very much!

Avatar
Descartar

Hello Manfred, Do you want this to apply only for account.invoice.line or to other lines such as sale.order.line stock.move etc? I'm asking because the solution differs depending on the needs Regards, Paul

Hello Paul At the time i only need it for account.invoice.line If it is substantially easier to do it globally - that would be ok to. At the moment we only use a very small part of odoo.. Thanks a lot for any Tipps!. (Unfortunately i can't comment directly on your Answer Paul - due to karma points)

Autor Mejor respuesta

Thanks for the Tipps! For the moment we circumvent that one. I'll post my solution as soon as i got one...

Avatar
Descartar
Mejor respuesta

Hi Manfred,

If you need it to be done only for account invoice line particularly then you have to:

1) pass context in product field in account invoice line object

2) override product.product's name_get() method

3) call its name_get() super method and store the result in a variable

3) if that passed context is found in name_get()'s context, then modify the string part of the result: [(1[id], 'LAPTOP'[string]), ()]
 else return the super's result as it is:

Or, if you want to apply it every where then

1) add a new char field to store your modified string to product.product

2) populate this field at the time of creating the product

3) update _rec_name with this field: _rec_name: YOUR_NEW_FIELD,

Hope it will help you...

Regards

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
3
feb 16
4726
1
abr 15
3759
0
mar 25
1278
0
ene 25
3360
1
ago 23
14650