Skip to Content
Menu
Dette spørgsmål er blevet anmeldt
3 Besvarelser
11750 Visninger

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
Kassér
Bedste svar

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
Kassér

Thanks Andreas Brueckl, that fixed my problem.

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

Bedste svar

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
Kassér
Bedste svar

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

Avatar
Kassér

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.

Related Posts Besvarelser Visninger Aktivitet
2
dec. 24
21394
0
sep. 24
1151
3
aug. 24
2338
0
feb. 24
1556
0
feb. 24
1153