Skip to Content
Menu
This question has been flagged
class AccountMove(models.Model):
_inherit = 'account.move'

def button_cancel(self):
account_pool = self.env['account.payment']
move_ids = account_pool.search([('ref', '=', self.name), ('state', '=', 'posted')])
if move_ids:
move_ids.sudo().action_draft()
move_ids.sudo().action_cancel()
res = super(AccountMove, self).button_cancel()
return res



--------------------------------------------------------------------------------------------------

Error:
Odoo Server Error

Traceback (most recent call last):
File "C:\Program Files\Odoo \14\.0\.20210910\server\odoo\addons\base\models\ir_http\.py\"\,\\ line\ 237\,\ in\ _dispatch\
\ \ \ \ result\ \=\ request\.dispatch\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \14\.0\.20210910\server\odoo\http\.py\"\,\\ line\ 684\,\ in\ dispatch\
\ \ \ \ result\ \=\ self\._call_function\(\*\*self\.params\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\http\.py\"\,\\ line\ 360\,\ in\ _call_function\
\ \ \ \ return\ checked_call\(self\.db\,\ \*args\,\ \*\*kwargs\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\service\model\.py\"\,\\ line\ 94\,\ in\ wrapper\
\ \ \ \ return\ f\(dbname\,\ \*args\,\ \*\*kwargs\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\http\.py\"\,\\ line\ 348\,\ in\ checked_call\
\ \ \ \ result\ \=\ self\.endpoint\(\*a\,\ \*\*kw\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\http\.py\"\,\\ line\ 913\,\ in\ __call__\
\ \ \ \ return\ self\.method\(\*args\,\ \*\*kw\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\http\.py\"\,\\ line\ 532\,\ in\ response_wrap\
\ \ \ \ response\ \=\ f\(\*args\,\ \*\*kw\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\web\controllers\main\.py\"\,\\ line\ 1393\,\ in\ call_button\
\ \ \ \ action\ \=\ self\._call_kw\(model\,\ method\,\ args\,\ kwargs\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\web\controllers\main\.py\"\,\\ line\ 1381\,\ in\ _call_kw\
\ \ \ \ return\ call_kw\(request\.env\[model\]\,\ method\,\ args\,\ kwargs\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\api\.py\"\,\\ line\ 396\,\ in\ call_kw\
\ \ \ \ result\ \=\ _call_kw_multi\(method\,\ model\,\ args\,\ kwargs\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\api\.py\"\,\\ line\ 383\,\ in\ _call_kw_multi\
\ \ \ \ result\ \=\ method\(recs\,\ \*args\,\ \*\*kwargs\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account\wizard\account_payment_register\.py\"\,\\ line\ 530\,\ in\ action_create_payments\
\ \ \ \ payments\ \=\ self\._create_payments\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\hr_expense\wizard\account_payment_register\.py\"\,\\ line\ 24\,\ in\ _create_payments\
\ \ \ \ payments\ \=\ super\(\)\._create_payments\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account\wizard\account_payment_register\.py\"\,\\ line\ 511\,\ in\ _create_payments\
\ \ \ \ payments\.action_post\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\payment\models\account_payment\.py\"\,\\ line\ 121\,\ in\ action_post\
\ \ \ \ payments_trans_not_done\.action_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account\models\account_payment\.py\"\,\\ line\ 765\,\ in\ action_cancel\
\ \ \ \ self\.move_id\.button_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\stock_account\models\account_move\.py\"\,\\ line\ 67\,\ in\ button_cancel\
\ \ \ \ res\ \=\ super\(AccountMove\,\ self\)\.button_cancel\(\)\
\ \ File\ \"c\:\users\hp\appdata\local\openerp\ s\.a\odoo\addons\14\.0\om_account_asset\models\account\.py\"\,\ line\ 17\,\ in\ button_cancel\
\ \ \ \ return\ super\(AccountMove\,\ self\)\.button_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account_edi\models\account_move\.py\"\,\\ line\ 167\,\ in\ button_cancel\
\ \ \ \ res\ \=\ super\(\)\.button_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account\models\account_move\.py\"\,\\ line\ 2581\,\ in\ button_cancel\
\ \ \ \ move_ids\.sudo\(\)\.action_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account\models\account_payment\.py\"\,\\ line\ 765\,\ in\ action_cancel\
\ \ \ \ self\.move_id\.button_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\stock_account\models\account_move\.py\"\,\\ line\ 67\,\ in\ button_cancel\
\ \ \ \ res\ \=\ super\(AccountMove\,\ self\)\.button_cancel\(\)\
\ \ File\ \"c\:\users\hp\appdata\local\openerp\ s\.a\odoo\addons\14\.0\om_account_asset\models\account\.py\"\,\ line\ 17\,\ in\ button_cancel\
\ \ \ \ return\ super\(AccountMove\,\ self\)\.button_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account_edi\models\account_move\.py\"\,\\ line\ 167\,\ in\ button_cancel\
\ \ \ \ res\ \=\ super\(\)\.button_cancel\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\addons\account\models\account_move\.py\"\,\\ line\ 2578\,\ in\ button_cancel\
\ \ \ \ move_ids\ \=\ account_pool\.search\(\[\(\'ref\'\,\ \'\=\'\,\ self\.name\)\,\ \(\'state\'\,\ \'\=\'\,\ \'posted\'\)\]\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\fields\.py\"\,\\ line\ 963\,\ in\ __get__\
\ \ \ \ record\.ensure_one\(\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\models\.py\"\,\\ line\ 4993\,\ in\ ensure_one\
\ \ \ \ raise\ ValueError\(\"Expected\ singleton\:\ \%s\"\ \%\ self\)\
Exception\
\
The\ above\ exception\ was\ the\ direct\ cause\ of\ the\ following\ exception\:\
\
Traceback\ \(most\ recent\ call\ last\)\:\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14\.0\.20210910\server\odoo\http\.py\"\,\\ line\ 640\,\ in\ _handle_exception\
\ \ \ \ return\ super\(JsonRequest\,\ self\)\._handle_exception\(exception\)\
\ \ File\ \"C\:\Program\ Files\Odoo\ \
14.0.20210910\server\odoo\http.py", line 316, in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: Expected singleton: account.move(15476, 15475, 15457, 15233, 15232, 14976, 14975, 14154, 14153, 14152, 13956, 13955, 13609, 13608, 13294, 13293, 13292, 12977, 12976, 12975, 12523, 12522, 11793, 11792, 11116, 11077, 10821, 10820, 10405, 10292, 10062, 9893, 9825, 9707, 9706, 9520, 9439, 9399, 9398, 9169, 9087, 9086, 8679, 8678, 8677, 8184, 7367, 7138, 7137, 6835, 6834, 6833, 6832, 5900, 5899, 5888, 5015, 4457, 4456, 4455, 3697, 3696, 3695, 3196, 3195, 3194, 2831, 2827)

Avatar
Discard
Best Answer

Hi,

This is a singleton error.It can be solved by adding a for loop.Try below code:

class AccountMove(models.Model):
_inherit = 'account.move'

def button_cancel(self):
account_pool = self.env['account.payment']
move_ids = account_pool.search([('ref', '=', self.name), ('state', '=', 'posted')])
if move_ids:
for rec in move_ids:
rec.sudo().action_draft()
rec.sudo().action_cancel()
res = super(AccountMove, self).button_cancel()
return res

Regards

Avatar
Discard
Author

Thank you

Related Posts Replies Views Activity
0
Aug 22
2198
1
Jan 21
4488
0
Aug 20
1985
0
May 23
1152
1
Sep 21
3493