Add ir.message and use UserWarning/UserError
This commit is contained in:
parent
b48f3318d9
commit
300639d912
34
message.xml
Normal file
34
message.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data group="1">
|
||||
<record model="ir.message" id="not_customer_invoice">
|
||||
<field name="text">A customer invoice/refund from sale device (%(reference)s) has not been created.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="not_sale_device">
|
||||
<field name="text">You have not defined a sale device for your user.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="not_draft_statement">
|
||||
<field name="text">A draft statement for "%(journal)s" payments has not been created.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="party_without_account_receivable">
|
||||
<field name="text">Party %(party)s has no any account receivable defined. Please, assign one.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="open_statement">
|
||||
<field name="text">Statement %(journal)s opened.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="statement_already_opened">
|
||||
<field name="text">Statement %(statement)s already opened.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="user_without_device">
|
||||
<field name="text">User %(user)s has not any device assigned yet.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="close_statement">
|
||||
<field name="text">Statement %(statement)s closed.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="statement_already_closed">
|
||||
<field name="text">Statement %(statement)s not found.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
36
sale.py
36
sale.py
@ -12,6 +12,8 @@ from trytond.pool import PoolMeta, Pool
|
||||
from trytond.pyson import Bool, Eval, Not
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.wizard import Wizard, StateView, StateTransition, Button
|
||||
from trytond.i18n import gettext
|
||||
from trytond.exceptions import UserError
|
||||
|
||||
|
||||
__all__ = ['Sale', 'SalePaymentForm', 'WizardSalePayment',
|
||||
@ -41,10 +43,6 @@ class Sale(metaclass=PoolMeta):
|
||||
'readonly': Not(Bool(Eval('lines'))),
|
||||
},
|
||||
})
|
||||
cls._error_messages.update({
|
||||
'not_customer_invoice': ('A customer invoice/refund '
|
||||
'from sale device (%s) has not been created.'),
|
||||
})
|
||||
|
||||
@staticmethod
|
||||
def default_sale_device():
|
||||
@ -70,7 +68,9 @@ class Sale(metaclass=PoolMeta):
|
||||
cls.process([sale])
|
||||
|
||||
if not sale.invoices and sale.invoice_method == 'order':
|
||||
cls.raise_user_error('not_customer_invoice', (sale.reference,))
|
||||
raise UserError(gettext(
|
||||
'sale_payment.not_customer_invoice',
|
||||
reference=sale.reference))
|
||||
|
||||
grouping = getattr(sale.party, 'sale_invoice_grouping_method',
|
||||
False)
|
||||
@ -218,18 +218,6 @@ class WizardSalePayment(Wizard):
|
||||
])
|
||||
pay_ = StateTransition()
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(WizardSalePayment, cls).__setup__()
|
||||
cls._error_messages.update({
|
||||
'not_sale_device': ('You have not defined a sale device for '
|
||||
'your user.'),
|
||||
'not_draft_statement': ('A draft statement for "%s" payments '
|
||||
'has not been created.'),
|
||||
'party_without_account_receivable': 'Party %s has no any '
|
||||
'account receivable defined. Please, assign one.',
|
||||
})
|
||||
|
||||
def default_start(self, fields):
|
||||
pool = Pool()
|
||||
Sale = pool.get('sale.sale')
|
||||
@ -238,7 +226,7 @@ class WizardSalePayment(Wizard):
|
||||
user = User(Transaction().user)
|
||||
sale_device = sale.sale_device or user.sale_device or False
|
||||
if user.id != 0 and not sale_device:
|
||||
self.raise_user_error('not_sale_device')
|
||||
raise UserError(gettext('sale_payment.not_sale_device'))
|
||||
return {
|
||||
'journal': sale_device.journal.id
|
||||
if sale_device.journal else None,
|
||||
@ -262,7 +250,8 @@ class WizardSalePayment(Wizard):
|
||||
('state', '=', 'draft'),
|
||||
], order=[('date', 'DESC')])
|
||||
if not statements:
|
||||
self.raise_user_error('not_draft_statement', (form.journal.name,))
|
||||
raise UserError(gettext('sale_payment.not_draft_statement',
|
||||
journal=form.journal.name))
|
||||
|
||||
active_id = Transaction().context.get('active_id', False)
|
||||
sale = Sale(active_id)
|
||||
@ -270,9 +259,12 @@ class WizardSalePayment(Wizard):
|
||||
Sale.set_number([sale])
|
||||
|
||||
account = (sale.party.account_receivable
|
||||
and sale.party.account_receivable.id
|
||||
or self.raise_user_error('party_without_account_receivable',
|
||||
error_args=(sale.party.name,)))
|
||||
and sale.party.account_receivable.id)
|
||||
|
||||
if not account:
|
||||
raise UserError(gettext(
|
||||
'sale_payment.party_without_account_receivable',
|
||||
party=sale.party.name))
|
||||
|
||||
if form.payment_amount:
|
||||
payment = StatementLine(
|
||||
|
59
statement.py
59
statement.py
@ -6,6 +6,9 @@ from trytond.pool import Pool, PoolMeta
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.wizard import Button, StateTransition, StateView, Wizard
|
||||
from decimal import Decimal
|
||||
from trytond.i18n import gettext
|
||||
from trytond.exceptions import UserError
|
||||
|
||||
|
||||
__all__ = ['Journal', 'Statement', 'Line', 'OpenStatementStart',
|
||||
'OpenStatementDone', 'OpenStatement', 'CloseStatementStart',
|
||||
@ -137,16 +140,6 @@ class OpenStatement(Wizard):
|
||||
Button('Done', 'end', 'tryton-ok', default=True),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(OpenStatement, cls).__setup__()
|
||||
cls._error_messages.update({
|
||||
'open_statement': 'Statement %s opened. \n',
|
||||
'statement_already_opened': 'Statement %s already opened. \n',
|
||||
'user_without_device': 'User %s has not any device assigned yet.'
|
||||
'\n',
|
||||
})
|
||||
|
||||
def default_done(self, fields):
|
||||
return {
|
||||
'result': self.result,
|
||||
@ -186,19 +179,16 @@ class OpenStatement(Wizard):
|
||||
'end_balance': Decimal('0.0'),
|
||||
}
|
||||
vlist.append(values)
|
||||
result += self.raise_user_error('open_statement',
|
||||
error_args=(journal.rec_name,),
|
||||
raise_exception=False)
|
||||
result += gettext('sale_payment.open_statement',
|
||||
journal=journal.rec_name)
|
||||
else:
|
||||
result += self.raise_user_error('statement_already_opened',
|
||||
error_args=(journal.rec_name,),
|
||||
raise_exception=False)
|
||||
result += gettext('sale_payment.statement_already_opened',
|
||||
journal=journal.rec_name)
|
||||
statements.extend(Statement.create(vlist))
|
||||
self.result = result
|
||||
else:
|
||||
self.result = self.raise_user_error('user_without_device',
|
||||
error_args=(user.rec_name,),
|
||||
raise_exception=False)
|
||||
self.result = gettext('sale_payment.user_without_device',
|
||||
user=user.rec_name)
|
||||
return 'done'
|
||||
|
||||
|
||||
@ -227,17 +217,6 @@ class CloseStatement(Wizard):
|
||||
Button('Done', 'end', 'tryton-ok', default=True),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(CloseStatement, cls).__setup__()
|
||||
cls._error_messages.update({
|
||||
'close_statement': 'Statement %s closed. \n',
|
||||
'statement_already_closed': 'Statement %s already closed. \n',
|
||||
'not_statement_found': 'Statement %s not found. \n',
|
||||
'user_without_device': 'User %s has not any device assigned yet.'
|
||||
'\n',
|
||||
})
|
||||
|
||||
def default_done(self, fields):
|
||||
return {
|
||||
'result': self.result,
|
||||
@ -271,22 +250,18 @@ class CloseStatement(Wizard):
|
||||
statement.end_balance = end_balance
|
||||
statement.save()
|
||||
statements.append(statement)
|
||||
result += self.raise_user_error('close_statement',
|
||||
error_args=(statement.rec_name,),
|
||||
raise_exception=False)
|
||||
result += gettext('sale_payment.close_statement',
|
||||
statement=statement.rec_name)
|
||||
elif statement:
|
||||
result += self.raise_user_error('statement_already_closed',
|
||||
error_args=(statement.rec_name,),
|
||||
raise_exception=False)
|
||||
result += gettext('sale_payment.statement_already_closed',
|
||||
statement=statement.rec_name)
|
||||
else:
|
||||
result += self.raise_user_error('not_statement_found',
|
||||
error_args=(journal.rec_name,),
|
||||
raise_exception=False)
|
||||
result += gettext('sale_payment.not_statement_found',
|
||||
journal=journal.rec_name)
|
||||
if statements:
|
||||
Statement.validate_statement(statements)
|
||||
self.result = result
|
||||
else:
|
||||
self.result = self.raise_user_error('user_without_device',
|
||||
error_args=(user.rec_name,),
|
||||
raise_exception=False)
|
||||
self.result = gettext('sale_payment.user_without_device',
|
||||
user=user.rec_name)
|
||||
return 'done'
|
||||
|
@ -204,7 +204,7 @@ Open statements for current device::
|
||||
0
|
||||
>>> open_statment = Wizard('open.statement')
|
||||
>>> open_statment.execute('create_')
|
||||
>>> open_statment.form.result == 'Statement Default opened. \n'
|
||||
>>> open_statment.form.result == 'Statement Default opened.'
|
||||
True
|
||||
>>> payment_statement, = Statement.find([('state', '=', 'draft')])
|
||||
|
||||
@ -270,7 +270,7 @@ When the statement is closed the invoices are paid and sale is done::
|
||||
|
||||
>>> close_statment = Wizard('close.statement')
|
||||
>>> close_statment.execute('validate')
|
||||
>>> close_statment.form.result == 'Statement Default - Default closed. \n'
|
||||
>>> close_statment.form.result == 'Statement Default - Default closed.'
|
||||
True
|
||||
>>> payment_statement.reload()
|
||||
>>> payment_statement.state == 'validated'
|
||||
|
@ -8,3 +8,4 @@ xml:
|
||||
sale.xml
|
||||
statement.xml
|
||||
user.xml
|
||||
message.xml
|
||||
|
Loading…
Reference in New Issue
Block a user