details: https://code.tryton.org/tryton/commit/59d049637f67
branch: default
user: Cédric Krier <[email protected]>
date: Sun Sep 06 10:21:56 2026 +0200
description:
Set button decorator for sending and updating invoices on Chorus to a
different method than the cron
Closes #15069
diffstat:
modules/account_fr_chorus/account.py | 33
++++++---
modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst | 11
++-
2 files changed, 30 insertions(+), 14 deletions(-)
diffs (96 lines):
diff -r 91dbc557ebc0 -r 59d049637f67 modules/account_fr_chorus/account.py
--- a/modules/account_fr_chorus/account.py Fri Sep 04 08:31:58 2026 +0200
+++ b/modules/account_fr_chorus/account.py Sun Sep 06 10:21:56 2026 +0200
@@ -337,9 +337,20 @@
}
@classmethod
+ def send(cls, records=None):
+ transaction = Transaction()
+ if not records:
+ records = cls.search([
+ ('invoice.company', '=',
+ transaction.context.get('company')),
+ ('state', '=', 'draft'),
+ ])
+ cls.send_button(records)
+
+ @classmethod
@ModelView.button
@Workflow.transition('sent')
- def send(cls, records=None):
+ def send_button(cls, records=None):
"""Send invoice to Chorus
The transaction is committed after each invoice.
@@ -348,13 +359,6 @@
Credential = pool.get('account.credential.chorus')
transaction = Transaction()
- if not records:
- records = cls.search([
- ('invoice.company', '=',
- transaction.context.get('company')),
- ('state', '=', 'draft'),
- ])
-
sessions = defaultdict(Credential.get_session)
cls.lock(records)
for record in records:
@@ -392,11 +396,7 @@
}
@classmethod
- @ModelView.button
def update(cls, records=None):
- "Update state from Chorus"
- pool = Pool()
- Credential = pool.get('account.credential.chorus')
transaction = Transaction()
if not records:
@@ -405,6 +405,15 @@
transaction.context.get('company')),
('state', '=', 'sent'),
])
+ cls.update_button(records)
+
+ @classmethod
+ @ModelView.button
+ def update_button(cls, records=None):
+ "Update state from Chorus"
+ pool = Pool()
+ Credential = pool.get('account.credential.chorus')
+ transaction = Transaction()
sessions = defaultdict(Credential.get_session)
succeeded, failed = [], []
diff -r 91dbc557ebc0 -r 59d049637f67
modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst
--- a/modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst
Fri Sep 04 08:31:58 2026 +0200
+++ b/modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst
Sun Sep 06 10:21:56 2026 +0200
@@ -123,7 +123,11 @@
Send to Chorus::
- >>> invoice_chorus.click('send')
+ >>> invoice_send, = Cron.find(
+ ... [('method', '=', 'account.invoice.chorus|send')], limit=1)
+ >>> invoice_send.click('run_once')
+
+ >>> invoice_chorus.reload()
>>> invoice_chorus.state
'sent'
>>> bool(invoice_chorus.number)
@@ -136,8 +140,11 @@
Update from Chorus::
+ >>> invoice_update, = Cron.find(
+ ... [('method', '=', 'account.invoice.chorus|update')], limit=1)
>>> while invoice_chorus.state == 'sent':
- ... invoice_chorus.click('update')
+ ... invoice_update.click('run_once')
+ ... invoice_chorus.reload()
... time.sleep(1)
>>> invoice_chorus.state
'exception'