Mark payment as succeeded when imported in statement
issue5765 review22221002
This commit is contained in:
1 parent
946f27cedb
commit
abe5c4d575
3 files changed
+74
-1
No files matched your search
@@ -1,3 +1,5 @@
|
||||
* Mark Payment as succeded when imported in statement
|
||||
|
||||
Version 4.0.0 - 2016-05-02
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add Python3 support
|
||||
@@ -9,4 +11,4 @@ Version 3.6.0 - 2015-04-20
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add support for PyPy
|
||||
Version 3.4.0 - 2014-10-20
|
||||
* Initial release
|
||||
* Initial release
|
||||
@@ -16,9 +16,18 @@ class Statement:
|
||||
def create_move(cls, statements):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Payment = pool.get('account.payment')
|
||||
|
||||
moves = super(Statement, cls).create_move(statements)
|
||||
|
||||
to_success = []
|
||||
for move, statement, lines in moves:
|
||||
for line in lines:
|
||||
if line.payment:
|
||||
to_success.append(line.payment)
|
||||
if to_success:
|
||||
Payment.succeed(to_success)
|
||||
|
||||
for move, statement, lines in moves:
|
||||
assert len({l.payment for l in lines}) == 1
|
||||
line = lines[0]
|
||||
|
||||
@@ -310,3 +310,65 @@ Succeed payment::
|
||||
Decimal('20.00')
|
||||
>>> debit_line.amount_second_currency
|
||||
Decimal('40.00')
|
||||
|
||||
Validate Statement with processing payment
|
||||
--------------------------------------------
|
||||
|
||||
Create a payable move::
|
||||
|
||||
>>> move = Move()
|
||||
>>> move.journal = expense
|
||||
>>> line = move.lines.new(account=payable, party=supplier,
|
||||
... credit=Decimal('50.00'))
|
||||
>>> line = move.lines.new(account=expense, debit=Decimal('50.00'))
|
||||
>>> move.click('post')
|
||||
|
||||
Create a processing payment for the move::
|
||||
|
||||
>>> Payment = Model.get('account.payment')
|
||||
>>> line, = [l for l in move.lines if l.account == payable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [line])
|
||||
>>> pay_line.form.journal = payment_journal
|
||||
>>> pay_line.execute('pay')
|
||||
>>> payment, = Payment.find([('line', '=', line.id)])
|
||||
>>> payment.click('approve')
|
||||
>>> payment.state
|
||||
u'approved'
|
||||
>>> process_payment = Wizard('account.payment.process', [payment])
|
||||
>>> process_payment.execute('process')
|
||||
>>> payment.reload()
|
||||
>>> payment.state
|
||||
u'processing'
|
||||
|
||||
Create statement for the payment::
|
||||
|
||||
>>> statement = Statement(name='test',
|
||||
... journal=statement_journal,
|
||||
... start_balance=Decimal('-50.00'),
|
||||
... end_balance=Decimal('-100.00'))
|
||||
>>> line = statement.lines.new(date=today)
|
||||
>>> line.payment = payment
|
||||
>>> line.party == supplier
|
||||
True
|
||||
>>> line.account == bank_clearing
|
||||
True
|
||||
>>> line.amount
|
||||
Decimal('-50.00')
|
||||
>>> statement.save()
|
||||
|
||||
Validate statement and check the payment is confirmed::
|
||||
|
||||
>>> statement.click('validate_statement')
|
||||
>>> statement.state
|
||||
u'validated'
|
||||
>>> line, = statement.lines
|
||||
>>> move_line, = [l for l in line.move.lines
|
||||
... if l.account == bank_clearing]
|
||||
>>> bool(move_line.reconciliation)
|
||||
True
|
||||
>>> payment.reload()
|
||||
>>> payment.state
|
||||
u'succeeded'
|
||||
>>> debit_line, = [l for l in payment.clearing_move.lines if l.debit > 0]
|
||||
>>> debit_line.debit
|
||||
Decimal('50.00')
|
||||
Reference in new issue
Block a user