Allow to re-generate message of payment group
issue4316 review14631002
This commit is contained in:
1 parent
01c01c63b3
commit
e889c55946
3 files changed
+26
-12
No files matched your search
@@ -1,3 +1,4 @@
|
||||
* Allow to re-generate message of a payment group
|
||||
* Use right sequence type in case of previous rejected payments
|
||||
* Add pain.001.003.03 and pain.008.003.02 flavors
|
||||
|
||||
|
||||
+24
-12
@@ -12,7 +12,7 @@ from lxml import etree
|
||||
from sql import Literal
|
||||
|
||||
from trytond.pool import PoolMeta, Pool
|
||||
from trytond.model import ModelSQL, ModelView, Workflow, fields
|
||||
from trytond.model import ModelSQL, ModelView, Workflow, fields, dualmethod
|
||||
from trytond.pyson import Eval, If
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.tools import reduce_ids, grouped_slice
|
||||
@@ -130,6 +130,9 @@ class Group:
|
||||
cls._error_messages.update({
|
||||
'no_mandate': 'No valid mandate for payment "%s"',
|
||||
})
|
||||
cls._buttons.update({
|
||||
'generate_message': {},
|
||||
})
|
||||
|
||||
def get_sepa_template(self):
|
||||
if self.kind == 'payable':
|
||||
@@ -140,7 +143,6 @@ class Group:
|
||||
def process_sepa(self):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
Message = pool.get('account.payment.sepa.message')
|
||||
if self.kind == 'receivable':
|
||||
mandates = Payment.get_sepa_mandates(self.payments)
|
||||
for payment, mandate in zip(self.payments, mandates):
|
||||
@@ -152,16 +154,26 @@ class Group:
|
||||
'sepa_mandate': mandate,
|
||||
'sepa_mandate_sequence_type': mandate.sequence_type,
|
||||
})
|
||||
tmpl = self.get_sepa_template()
|
||||
if not tmpl:
|
||||
raise NotImplementedError
|
||||
if not self.sepa_messages:
|
||||
self.sepa_messages = ()
|
||||
message = tmpl.generate(group=self,
|
||||
datetime=datetime, normalize=unicodedata.normalize,
|
||||
).filter(remove_comment).render()
|
||||
message = Message(message=message, type='out', state='waiting')
|
||||
self.sepa_messages += (message,)
|
||||
self.generate_message(_save=False)
|
||||
|
||||
@dualmethod
|
||||
@ModelView.button
|
||||
def generate_message(cls, groups, _save=True):
|
||||
pool = Pool()
|
||||
Message = pool.get('account.payment.sepa.message')
|
||||
for group in groups:
|
||||
tmpl = group.get_sepa_template()
|
||||
if not tmpl:
|
||||
raise NotImplementedError
|
||||
if not group.sepa_messages:
|
||||
group.sepa_messages = ()
|
||||
message = tmpl.generate(group=group,
|
||||
datetime=datetime, normalize=unicodedata.normalize,
|
||||
).filter(remove_comment).render()
|
||||
message = Message(message=message, type='out', state='waiting')
|
||||
group.sepa_messages += (message,)
|
||||
if _save:
|
||||
cls.save(groups)
|
||||
|
||||
@property
|
||||
def sepa_initiating_party(self):
|
||||
|
||||
@@ -4,5 +4,6 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="/form/field[@name='kind']" position="after">
|
||||
<field name="sepa_messages" colspan="4"/>
|
||||
<button name="generate_message" string="Generate Message" colspan="4"/>
|
||||
</xpath>
|
||||
</data>
|
||||
Reference in new issue
Block a user