Skip to Content
Menu
This question has been flagged
1 Reply
1272 Views

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

Avatar
Discard
Best Answer

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

Avatar
Discard
Related Posts Replies Views Activity
0
Feb 25
3082
1
Feb 24
2636
1
Dec 23
3548
1
Mar 24
2517
4
May 25
1907