콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
5 답글
5408 화면

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'