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

Hello

I recently added a many2one field (canal_id) to my quotation template and i want to pass the value to my invoice


My code looks like this:

class canal_ventas(models.Model):

    _name = 'canal_ventas.canal_ventas'

    _description = 'Agrega variable canal de ventas a la cotizacion/orden de venta'


    name = fields.Char(string='Nombre canal de ventas', required=True)

    description = fields.Text(string='Descripcion del canal')



class canal_ventas_inherit(models.Model):

    _inherit = 'sale.order'


    canal_id = fields.Many2one('canal_ventas.canal_ventas', string="canal ventas")

 


    def _prepare_invoice(self):

        res = super(canal_ventas_inherit, self)._prepare_invoice()

        res.update({

            'canal_inv': self.canal_id,

            })

        return res

       

class factura_canal(models.Model):

    _inherit = 'account.move'



    canal_inv = fields.Many2one('canal_ventas.canal_ventas', string="canal ventas")

In the quotation form vie I see the new field and i can select values to it.

Also, In the invoice form view I see the new canal_inv field and I can select values on it if a create a new invoice directly in the account.move model.

My problem is when i try to pass the values from a quotation to an invoice. If I open an existing quotation (S0078 for example) and I push the create invoice button, I get the following error:

psycopg2.ProgrammingError: can't adapt type 'canal_ventas.canal_ventas'

Any ideas on how to solve this issue?

By the way I'm using V18

Thank you 

아바타
취소
작성자

Thank you so much. It's working right now


Great! Would appreciate you marking the answer as correct then :)

베스트 답변

def _prepare_invoice(self):

    res = super(canal_ventas_inherit, self)._prepare_invoice()

    res.update({

        'canal_inv': self.canal_id.id,

    })

    return res

Replace your existing method with this above code. Thanks

아바타
취소
작성자 베스트 답변

I'm sorry but I don't know how to do it. its my first time asking for help

아바타
취소
베스트 답변

When writing to a Many2one field, you need to provide the integer value of the record it's supposed to be linked to, not the record object itself.

Hence, this should work:

    def _prepare_invoice(self):
        res = super(canal_ventas_inherit, self)._prepare_invoice()
        res.update({
            'canal_inv': self.canal_id.id,
        })
        return res


아바타
취소
관련 게시물 답글 화면 활동
1
3월 15
3910
4
9월 25
973
2
8월 25
697
1
8월 25
459
1
8월 25
750