コンテンツへスキップ
メニュー
この質問にフラグが付けられました
5 返信
5392 ビュー

I made this code to compute the total quantity of the product but the answer is displaying in the view. how can i fix this?? any help please.. Stock.picking.out class...

Here's my code:

 def _get_total_quantity(self, cr, uid, ids, field_name, args, context=None):
        
        res ={}
        product_qty = {}
        total_quantity= {}
        qty = 0.00
    
        move_pool = self.pool.get('stock.move')

        for stock_move_picking in self.browse(cr,uid,ids,context=context):
            total_qty = move_pool.search(cr,uid,[('picking_id','=', stock_move_picking.id)],context = context)
            for picking in move_pool.browse(cr,uid,total_qty, context=context):
           qty = qty + picking.product_qty
            res[stock_move_picking.id] = {'total_quantity':qty}
        return res
    
    _columns = {
               'total_quantity':fields.function(_get_total_quantity, type='float', method=True,store=True, multi=True, string='Summation of Quantity', ),            
                 }
    
   

アバター
破棄
最善の回答

I think its due to store= True.

because store=True means it will take value from database.

And In database it will store when you create/Update in existing record.

First try without  store = True

But If you want forcefully store value in database then you should try below.

def _get_stock_move_picking_id( cr, uid, ids, context=None):

        ### logic to return id list of parent object.

def _get_total_quantity(self, cr, uid, ids, field_name, args, context=None):

          #Same logic what ever you done 

         res[stock_move_picking.id] = qty

return res               

'total_quantity':fields.function(total_quantity, method=True,string='tOtal Amount',

                                  store={
                                               'YOUR_LINE_OBJECT': (_get_stock_move_picking_id, ['product_qty'], 20),
                                              }),

 

アバター
破棄
著作者

thanks Piyush but it didn't work:(

最善の回答

Hello ,

your "total_quantity" field also put in stock.picking and check it.

 

アバター
破棄
著作者

thanks Nirav Jani finally it works.

最善の回答

Hi Alcaline,

I find this works for me. v7/v8/v9

import logging

_logger = logging.getLogger('WHATEVER U WANT')

_logger = logging.getLogger(__name__) ## Or FileName of your py.file

_logger.info("Testing: {0}{1}{2}".format(item1, item2, item3))

Now, Im not sure about all your other code, see doc's and check your

Def function & feilds.function are correct.

And test test test... Let us know how you go, & Good luck. 

アバター
破棄
著作者

thanks Vee

最善の回答

You define a function field with type float. So, change the following line

res[stock_move_picking.id] = {'total_quantity':qty}

to this one.

res[stock_move_picking.id] = qty

アバター
破棄
著作者

hi Ben I tried that one but it gives me an Error like this AttributeError: 'float' object has no attribute 'iteritems'. how to solve this one??

Try to set multi=False, in function field definition. I assume no other field is depend on the function.

著作者

there's no error occurred but still it doe not display the value of my answer.. i don't know what the problem.. thanks Ben

Hi, I see you update your post. While debugging, what is the value of qty?

著作者

the value of qty is the summation of Quantity/RSQ. I used this equation to call the value of qty and view to field 'total_quantity' res[stock_move_picking.id] = {'total_quantity':qty} Did i used the wrong equation or what?

Just wondering. It's hard to read other's code in limited context and awful format (provided by this forum).

最善の回答

Hi,

Please try this one

res[ids[0]] = qty

return res

アバター
破棄
著作者

got the same error too AttributeError: 'float' object has no attribute 'iteritems'