Comment by [email protected]: Your previous design with the account.payment.line model seems more modular.
As I already said, sending the payment order to the bank does not mean that the transaction is really made, even if the payment order was accepted. So there is a difference between paying something twice and sending two different payment orders for the same receivable item. With the latest design one would have to delete the old payment order in order to resend a new one to the bank. Double-paying an open item can easily be prevented by a constraint which takes the status of the payment order into account, but with the One2Many field to the move lines one would lose the ability to partially pay an item or send a payment order for the same item twice.
For more information: http://code.google.com/p/tryton/wiki/PaymentOrder
