Since it is possible to go back to draft for supplier invoice even if a number was set. The open_date should be reset in draft. review764002
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
#This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
#this repository contains the full copyright notices and license terms.
|
|
import datetime
|
|
|
|
from trytond.model import ModelView, Workflow, fields
|
|
from trytond.pool import PoolMeta
|
|
|
|
__all__ = ['Invoice']
|
|
__metaclass__ = PoolMeta
|
|
|
|
|
|
class Invoice:
|
|
__name__ = 'account.invoice'
|
|
open_date = fields.DateTime('Open Date')
|
|
|
|
@classmethod
|
|
def __setup__(cls):
|
|
super(Invoice, cls).__setup__()
|
|
cls.party.datetime_field = 'open_date'
|
|
if 'open_date' not in cls.party.depends:
|
|
cls.party.depends.append('open_date')
|
|
cls.invoice_address.datetime_field = 'open_date'
|
|
if 'open_date' not in cls.invoice_address.depends:
|
|
cls.invoice_address.depends.append('open_date')
|
|
cls.payment_term.datetime_field = 'open_date'
|
|
if 'open_date' not in cls.payment_term.depends:
|
|
cls.payment_term.depends.append('open_date')
|
|
|
|
def set_number(self):
|
|
set_open_date = not self.number
|
|
super(Invoice, self).set_number()
|
|
if set_open_date:
|
|
self.write([self], {
|
|
'open_date': datetime.datetime.now(),
|
|
})
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
@Workflow.transition('draft')
|
|
def draft(cls, invoices):
|
|
super(Invoice, cls).draft(invoices)
|
|
cls.write(invoices, {
|
|
'open_date': None,
|
|
})
|
|
|
|
@classmethod
|
|
def copy(cls, invoices, default=None):
|
|
if default is None:
|
|
default = {}
|
|
default = default.copy()
|
|
default['open_date'] = None
|
|
return super(Invoice, cls).copy(invoices, default=default)
|