Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
1388 Lượt xem

Hello, 

I'm trying to reuse Sales Order Wizard for creating invoice in different model but without luck. What is the best approach to reuse existing code from wizard? Is it possible to do it? 


sale_orders = self.env['sale.order'].search(domain)

wizard = self.env['sale.advance.payment.inv']
for order in sale_orders:
​invoice = wizard._create_invoices(order)

I'm ending with this error even when I print out wizard it's type sale.advance.payment.inv()


  File "/odoo-17.0+e/comunity/addons/sale/wizard/sale_make_invoice_advance.py", line 196, in _create_invoices

    self.ensure_one()

  File "/odoo-17.0+e/comunity/odoo/models.py", line 5846, in ensure_one

    raise ValueError("Expected singleton: %s" % self)

ValueError: Expected singleton: sale.advance.payment.inv()


Thx

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hi,

Try this:sale_orders = self.env['sale.order'].search(domain)


for order in sale_orders:

    # Create a wizard for each order

    wizard = self.env['sale.advance.payment.inv'].create({

        'advance_payment_method': 'delivered',  # or 'all' depending on your needs

    })

    # Set context or any other necessary fields if required

    wizard = wizard.with_context(active_model='sale.order', active_ids=[order.id], active_id=order.id)

    # Call the method to create the invoice


Hope it helps

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 2 25
3189
1
thg 2 24
2845
1
thg 12 23
3976
1
thg 3 24
2728
4
thg 5 25
2406