Siirry sisältöön
Menu
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Tämä kysymys on merkitty
3 Vastaukset
11750 Näkymät

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
Hylkää
Paras vastaus

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
Hylkää

Thanks Andreas Brueckl, that fixed my problem.

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

Paras vastaus

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
Hylkää
Paras vastaus

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

Avatar
Hylkää

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.

Aiheeseen liittyviä artikkeleita Vastaukset Näkymät Toimenpide
2
jouluk. 24
21394
0
syysk. 24
1151
3
elok. 24
2338
0
helmik. 24
1556
0
helmik. 24
1153