Skip to Content
Menu
This question has been flagged
1 Reply
3490 Views

Hi all,

I've created a field Transport charges in sale order which fetches the amount from delivery method field in sale order. This field is used in the computation of margin. 

Margin now is "Selling price - Cost price". but I've altered it as "Selling price - Cost price - Transport Charges" and it is working fine when i create the order freshly but if I edit the transport charges amount in a already created order the margin is not getting updated, It remains the old margin. The margin is not getting computed and updated again.

Can anyone help me how to update or where am I going wrong

The code to compute is

_inherit = "sale.order"
    def _product_margin(self, cr, uid, ids, field_name, arg, context=None):
        result = {}
        for sale in self.browse(cr, uid, ids, context=context):
            result[sale.id] = 0.0
            for line in sale.order_line:
                result[sale.id] += line.margin or 0.0
            result[sale.id] = result[sale.id] - sale.transport
        return result

_columns = {
        'transport':fields.float('transport charges', digits=(16,2)),            
    }

Avatar
Discard
Author

Yeah donelli i know we have to put a onchange trigger but i dont know how to trigger the function from that onchange method

Best Answer

You omitted the most important part of the code, the definition of the field `margin`.

My guess is that margin is a function field with a `store` parameter, that tells OpenERP to store the value in the database the first time it's calculated instead of recomputing it every time. With the store parameter you can also specify some fields that, when changed, will trigger a recalculation of your field. What you wanna do is add your `transport` field to this list of "trigger" fields, so that when `transport` is changed `margin` will be recomputed.

Function fields and store parameter.

Avatar
Discard
Related Posts Replies Views Activity
1
Mar 15
4036
1
Mar 15
6974
2
Jul 25
342
1
Jun 25
407
1
May 25
708