trytond-patches/issue4322-account_payment_s...

47 lines
2.0 KiB
Diff

diff -r 121f5e408156 trytond/trytond/modules/account_payment_sepa/payment.py
--- a/trytond/trytond/modules/account_payment_sepa/payment.py Wed Jan 11 13:47:05 2017 +0100
+++ b/trytond/trytond/modules/account_payment_sepa/payment.py Wed Jan 11 13:50:43 2017 +0100
@@ -139,9 +139,8 @@
Payment = pool.get('account.payment')
Message = pool.get('account.payment.sepa.message')
if self.kind == 'receivable':
- payments = [p for p in self.payments if not p.sepa_mandate]
- mandates = Payment.get_sepa_mandates(payments)
- for payment, mandate in zip(payments, mandates):
+ mandates = Payment.get_sepa_mandates(self.payments)
+ for payment, mandate in zip(self.payments, mandates):
if not mandate:
self.raise_user_error('no_mandate', payment.rec_name)
# Write one by one becasue mandate.sequence_type must be
@@ -217,14 +216,27 @@
'get_sepa_instruction_id', searcher='search_sepa_instruction_id')
@classmethod
+ def copy(cls, payments, default=None):
+ if default is None:
+ default = {}
+ default.setdefault('sepa_mandate_sequence_type', None)
+ return super(Payment, cls).copy(payments, default=default)
+
+ @classmethod
def get_sepa_mandates(cls, payments):
mandates = []
for payment in payments:
- for mandate in payment.party.sepa_mandates:
- if mandate.is_valid:
- break
+ if payment.sepa_mandate:
+ if payment.sepa_mandate.is_valid:
+ mandate = payment.sepa_mandate
+ else:
+ mandate = None
else:
- mandate = None
+ for mandate in payment.party.sepa_mandates:
+ if mandate.is_valid:
+ break
+ else:
+ mandate = None
mandates.append(mandate)
return mandates