Overslaan naar inhoud
Menu
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Deze vraag is gerapporteerd
3 Antwoorden
11749 Weergaven

Does anyone know why I can't rewrite the _amount_line method on sale.order.line???

Maybe because it's a private function?

I'm not sure.

This doesn't work alone:

    def _amount_line(self, cr, uid, ids, field_name, arg, context=None):
    tax_obj = self.pool.get('account.tax')
    cur_obj = self.pool.get('res.currency')
    res = {}
    if context is None:
        context = {}
    for line in self.browse(cr, uid, ids, context=context):
        price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
        taxes = tax_obj.compute_all(cr, uid, line.tax_id, price, line.product_uom_qty, line.product_id, line.order_id.partner_id)
        cur = line.order_id.pricelist_id.currency_id
        #This gets the delivery_price
        total=0
        for delivery_line in line.delivery_lines:
            total+=delivery_line.delivery_price

        res[line.id] = cur_obj.round(cr, uid, cur, taxes['total'])+total
    return res

The only solution that I've found is rewrite the function and create the field again:

_columns = {
    'price_subtotal': fields.function(_amount_line, string='Subtotal', digits_compute= dp.get_precision('Account')),
}

Am I missing something? Or It's something that happens all the time?

Thanks,

Grover Menacho

Avatar
Annuleer
Beste antwoord

Yes, it is required to specify the field again.

Another option would be to only update the function pointer:

self._columns['price_subtotal']._fnct = _amount_line
Avatar
Annuleer

Thanks Andreas Brueckl, that fixed my problem.

Hello. I'd like to know where to put this code... Thank you!

Beste antwoord

i can't get this to work either... 

if i specify the field again, function is called, but then sale.order module can't acces 'price_subtotal', and i don't see why not...

( File "/opt/openerp/server/openerp/addons/sale/sale.py", line 100, in _amount_all

val1 += line.price_subtotal File "/opt/openerp/server/openerp/osv/orm.py", line 504, in __getattr__ raise AttributeError(e) AttributeError: 857)

i also can't figure out how to update function pointer...

Avatar
Annuleer
Beste antwoord

Ok. thanks. I didn't know about this and I was breaking my head trying to check this.

Avatar
Annuleer

Hey Andreas can you tell where to put the line you suggested in code?? I tried before & after the overridden function it gives me error.

Gerelateerde posts Antwoorden Weergaven Activiteit
2
dec. 24
21392
0
sep. 24
1150
3
aug. 24
2330
0
feb. 24
1553
0
feb. 24
1151