diff --git a/modules/account_fr_chorus/account.py b/modules/account_fr_chorus/account.py index 44ab08557d..cfd2c63d6b 100644 --- a/modules/account_fr_chorus/account.py +++ b/modules/account_fr_chorus/account.py @@ -5,6 +5,7 @@ import datetime import logging import posixpath from collections import defaultdict +from functools import wraps from oauthlib.oauth2 import BackendApplicationClient, TokenExpiredError from requests_oauthlib import OAuth2Session @@ -181,6 +182,22 @@ class Invoice(metaclass=PoolMeta): InvoiceChorus.save(invoices_chorus) +def default_records(state): + def decorator(func): + @wraps(func) + def wrapper(cls, records=None): + transaction = Transaction() + if records is None: + records = cls.search([ + ('invoice.company', '=', + transaction.context.get('company')), + ('state', '=', state), + ]) + return func(cls, records) + return wrapper + return decorator + + class InvoiceChorus( Workflow, ModelSQL, ModelView, _SyntaxMixin, metaclass=PoolMeta): "Invoice Chorus" @@ -310,20 +327,10 @@ class InvoiceChorus( } @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 + @default_records('draft') @ModelView.button @Workflow.transition('sent') - def send_button(cls, records=None): + def send(cls, records=None): """Send invoice to Chorus The transaction is committed after each invoice. @@ -369,20 +376,9 @@ class InvoiceChorus( } @classmethod - def update(cls, records=None): - transaction = Transaction() - - if not records: - records = cls.search([ - ('invoice.company', '=', - transaction.context.get('company')), - ('state', '=', 'sent'), - ]) - cls.update_button(records) - - @classmethod + @default_records('sent') @ModelView.button - def update_button(cls, records=None): + def update(cls, records=None): "Update state from Chorus" pool = Pool() Credential = pool.get('account.credential.chorus')