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

I have added an extra field which relates to the project.project model in the sale order

class InheritSaleOrder(models.Model):
_inherit = 'sale.order'

project_name = fields.Many2one(comodel_name="project.project", string="Project Name", required=False)

i also have a customized module for project budget which is supposed  to automatically pick the all the products in the sale order line relating to a specific order using onchange here is my function

@api.multi
@api.onchange('project_id')
def change_project_id(self):
#get quotation id
quotation_id = self.project_id

if(quotation_id!=""):

#get quotation info
quotation_list = self.env['sale.order'].search([('project_name','=',quotation_id.id)])
data = {}
#loop through quotation lines
new_lines = self.env['project.budget.line']
for line in quotation_list.order_line: #line 83
##populate items
data = {
'product_id': line.product_id.id,
'product_categ_id':line.product_categ_id,
'product_qty':line.product_uom_qty ,
'product_uom' : line.product_uom.id ,
'price_unit': line.product_id.standard_price #TODO - Use the pricelist to retrieve item prices
}
new_line = new_lines.new(data) #adding new items to the model
new_lines += new_line
#self.update('reference_bq' : value)
self.budget_line_items += new_lines # set budget lines
return {}
#return vals

# on change update lines

however when i try to run my code i get a singleton error i dont know what am missing kindly assist

File "/home/dishon/Desktop/odoo-dev/todo_app/project_budget/models/models.py", line 83, in change_project_id
    for line in quotation_list.order_line:
  File "/home/dishon/Desktop/odoo-dev/odoo/odoo/fields.py", line 909, in __get__
    record.ensure_one()
  File "/home/dishon/Desktop/odoo-dev/odoo/odoo/models.py", line 4848, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: sale.order(23, 22, 21)


아바타
취소
베스트 답변

Hi,

This error occurred because you are trying to access multiple records list.

The error is from this line:

for line in quotation_list.order_line:

because quotation_list  has sale.order(23, 22, 21) records so you have to put one more for loop in quotation_list


So your code should be:


@api.multi

@api.onchange('project_id')

def change_project_id(self):

    #get quotation id

    quotation_id = self.project_id


    if(quotation_id!=""):


        #get quotation info

        quotation_list = self.env['sale.order'].search([('project_name','=',quotation_id.id)])

        data = {}

        #loop through quotation lines

        new_lines = self.env['project.budget.line']

        for quotation in quotation_list: #line 83

            for line in quotation.order_line:

                ##populate items

                data = {

                    'product_id': line.product_id.id,

                    'product_categ_id':line.product_categ_id,

                    'product_qty':line.product_uom_qty ,

                    'product_uom' : line.product_uom.id ,

                    'price_unit': line.product_id.standard_price #TODO - Use the pricelist to retrieve item prices

                }

                new_line = new_lines.new(data) #adding new items to the model

                new_lines += new_line

        #self.update('reference_bq' : value)

        self.budget_line_items += new_lines # set budget lines

        return {}

    #return vals


    # on change update lines

아바타
취소
작성자

Thanks its working now

베스트 답변

hello

in your code, at somewhere you get the multiple records and from that you try access the field.

for eg. into your code you get multiple records into the variable quotation_list. and into the for loop you directly

access the order_line. that's why you get an error.

try like below code:

for quotation in quotation_list:

    for line in quotation.order_line: # made this change in line 83 and add above for loop into your code.

        # your code here

        ##populate items

 

I hope may this will helps you.

아바타
취소
작성자

Thanks Mitul Shingala its working right

관련 게시물 답글 화면 활동
0
10월 22
2048
0
5월 20
3614
3
7월 18
5782
1
7월 18
7518
0
5월 18
5194