Add control to cancel an invoice that closed journal and period

#041331
This commit is contained in:
Raimon Esteve 2020-09-17 11:53:06 +02:00
parent 0e07d4e411
commit b19d4873da
4 changed files with 53 additions and 15 deletions

View File

@ -28,17 +28,32 @@ class Invoice(metaclass=PoolMeta):
@classmethod
def draft(cls, invoices):
Move = Pool().get('account.move')
pool = Pool()
Move = pool.get('account.move')
JournalPeriod = pool.get('account.journal.period')
moves = []
for invoice in invoices:
if invoice.move:
# check period is closed
if invoice.move.period.state == 'close':
raise UserError(gettext(
'account_invoice_posted2draft.draft_closed_period',
'account_invoice_posted2draft.msg_draft_closed_period',
invoice=invoice.rec_name,
period=invoice.move.period.rec_name,
))
# check period and journal is closed
journal_periods = JournalPeriod.search([
('journal', '=', invoice.move.journal.id),
('period', '=', invoice.move.period.id),
], limit=1)
if journal_periods:
journal_period, = journal_periods
if journal_period.state == 'close':
raise UserError(gettext(
'account_invoice_posted2draft.msg_modify_closed_journal_period',
invoice=invoice.rec_name,
journal_period=journal_period.rec_name))
moves.append(invoice.move)
if moves:
with Transaction().set_context(draft_invoices=True):
@ -55,7 +70,7 @@ class Invoice(metaclass=PoolMeta):
for invoice in invoices:
if invoice.type == 'out' and invoice.number:
raise UserError(gettext(
'account_invoice_posted2draft.cancel_invoice_with_number'))
'account_invoice_posted2draft.msg_cancel_invoice_with_number'))
return super(Invoice, cls).cancel(invoices)

View File

@ -2,12 +2,22 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "model:ir.message,text:cancel_invoice_with_number"
msgctxt "model:ir.message,text:msg_cancel_invoice_with_number"
msgid "You cannot cancel an invoice with number"
msgstr ""
msgstr "No podeu cancel·lar una factura amb un número assignat."
msgctxt "model:ir.message,text:draft_closed_period"
msgctxt "model:ir.message,text:msg_draft_closed_period"
msgid ""
"You can not set to draft invoice \"%(invoice)s\" because period "
"\"%(period)s\" is closed."
msgstr ""
"No es pot passar a esborrany la factura \"%(invoice)s\" perquè el període "
"\"%(period)s\" està tancat."
msgctxt "model:ir.message,text:msg_modify_closed_journal_period"
msgid ""
"You can not set to draft invoice \"%(invoice)s\" on closed journal-period "
"\"%(journal_period)s\"."
msgstr ""
"No es pot passar a esborrany la factura \"%(invoice)s\" perquè el diari-"
"període \"%(journal_period)s\". està tancat."

View File

@ -2,12 +2,22 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "model:ir.message,text:cancel_invoice_with_number"
msgctxt "model:ir.message,text:msg_cancel_invoice_with_number"
msgid "You cannot cancel an invoice with number"
msgstr ""
msgstr "No puede cancelar una factura con un número asignado."
msgctxt "model:ir.message,text:draft_closed_period"
msgctxt "model:ir.message,text:msg_draft_closed_period"
msgid ""
"You can not set to draft invoice \"%(invoice)s\" because period "
"\"%(period)s\" is closed."
msgstr ""
"No se puede pasar a borrador la factura \"%(invoice)s\" porqué el período "
"\"%(period)s\" está cerrado."
msgctxt "model:ir.message,text:msg_modify_closed_journal_period"
msgid ""
"You can not set to draft invoice \"%(invoice)s\" on closed journal-period "
"\"%(journal_period)s\"."
msgstr ""
"No se puede pasar a borrador la factura \"%(invoice)s\" porqué el diario-"
"período \"%(journal_period)s\" está cerrado."

View File

@ -3,11 +3,14 @@
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="draft_closed_period">
<field name="text">You can not set to draft invoice "%(invoice)s" because period "%(period)s" is closed.</field>
</record>
<record model="ir.message" id="cancel_invoice_with_number">
<field name="text">You cannot cancel an invoice with number</field>
</record>
<record model="ir.message" id="msg_draft_closed_period">
<field name="text">You can not set to draft invoice "%(invoice)s" because period "%(period)s" is closed.</field>
</record>
<record model="ir.message" id="msg_cancel_invoice_with_number">
<field name="text">You cannot cancel an invoice with number</field>
</record>
<record model="ir.message" id="msg_modify_closed_journal_period">
<field name="text">You can not set to draft invoice "%(invoice)s" on closed journal-period "%(journal_period)s".</field>
</record>
</data>
</tryton>