[ADD] account_banking_aggregate_payment

This commit is contained in:
unknown
2013-06-24 12:19:38 +02:00
committed by Holger Brunn
10 changed files with 799 additions and 0 deletions

View File

@@ -0,0 +1 @@
import model

View File

@@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Account Banking Aggregate Payment',
'version': '0.1.173',
'license': 'AGPL-3',
'author': 'Therp BV',
'website': 'https://launchpad.net/banking-addons',
'category': 'Banking addons',
'depends': ['account_direct_debit'],
'data': [
'data/payment_mode_type.xml',
'view/payment_mode.xml',
'view/export_aggregate.xml',
],
'description': '''
This module allows for aggregating payments for various creditors
and making them payable to a single partner. This is practiced in
certain purchasing consortia.
After collection of the payable invoices on a payment order of type
'Aggregate payment', the move lines in the payment order are
reconciled by a move on a transit account, the total amount of which
is then transferred onto the designated partner's account payable
(upon confirmation of the aggregate payment order).
The payment order wizard then proceeds to create a new payment order
of a user chosen payment mode with only the aggregate move line in it.
''',
'active': False,
}

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="payment.mode.type"
id="type_aggregate">
<field name="name">Aggregate payment</field>
<field name="code">AGGR</field>
<field name="suitable_bank_types"
eval="[(6, 0, (ref('base_iban.bank_iban'),
ref('base.bank_normal')))]" />
<field name="ir_model_id"
ref="model_banking_export_aggregate"/>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,175 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_banking_aggregate_payment
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-06-13 19:35+0000\n"
"PO-Revision-Date: 2013-06-13 19:35+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_banking_aggregate_payment
#: view:payment.mode:0
msgid "Aggregate payment"
msgstr "Aggregate payment"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "Create"
msgstr "Create"
#. module: account_banking_aggregate_payment
#: help:payment.mode,aggregate_partner_id:0
msgid "The single partner on the chained payment order"
msgstr "The single partner on the chained payment order"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:134
#, python-format
msgid "Aggregate Payment Order %s"
msgstr "Aggregate Payment Order %s"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:230
#, python-format
msgid "Payment order workflow does not go into state \"done\""
msgstr "Payment order workflow does not go into state \"done\""
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:143
#, python-format
msgid "No move line provided for line %s"
msgstr "No move line provided for line %s"
#. module: account_banking_aggregate_payment
#: model:ir.model,name:account_banking_aggregate_payment.model_payment_mode
msgid "Payment Mode"
msgstr "Payment Mode"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:48
#, python-format
msgid "Please only select a single payment order"
msgstr "Please only select a single payment order"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:147
#, python-format
msgid "Move line %s has already been paid/reconciled"
msgstr "Move line %s has already been paid/reconciled"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:44
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:121
#, python-format
msgid "Please select a payment order"
msgstr "Please select a payment order"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:125
#, python-format
msgid "This operation can only be performed on a single payment order"
msgstr "This operation can only be performed on a single payment order"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:155
#, python-format
msgid "Transit %s"
msgstr "Transit %s"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:191
#, python-format
msgid "Transit reconciliation"
msgstr "Transit reconciliation"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "Export aggregate payment order"
msgstr "Export aggregate payment order"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:208
#, python-format
msgid "Amount payable"
msgstr "Amount payable"
#. module: account_banking_aggregate_payment
#: field:payment.mode,aggregate_partner_id:0
msgid "Aggregate payment beneficiary"
msgstr "Aggregate payment beneficiary"
#. module: account_banking_aggregate_payment
#: help:payment.mode,chained_mode_id:0
msgid "The payment type of the chained payment order"
msgstr "The payment type of the chained payment order"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:43
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:47
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:65
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:71
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:120
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:124
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:142
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:146
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:229
#, python-format
msgid "Error"
msgstr "Error"
#. module: account_banking_aggregate_payment
#: model:ir.model,name:account_banking_aggregate_payment.model_banking_export_aggregate
msgid "Execute aggregate payment"
msgstr "Execute aggregate payment"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "When you confirm this order, the total amount will be made payable to the partner that has been set on the payment mode. A new payment order will open in your screen with this one payment."
msgstr "When you confirm this order, the total amount will be made payable to the partner that has been set on the payment mode. A new payment order will open in your screen with this one payment."
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:172
#, python-format
msgid "Reconciliation %s"
msgstr "Reconciliation %s"
#. module: account_banking_aggregate_payment
#: field:banking.export.aggregate,reference:0
msgid "Reference"
msgstr "Reference"
#. module: account_banking_aggregate_payment
#: field:banking.export.aggregate,payment_order_id:0
msgid "Payment order"
msgstr "Payment order"
#. module: account_banking_aggregate_payment
#: field:payment.mode,chained_mode_id:0
msgid "Chained payment mode"
msgstr "Chained payment mode"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:66
#, python-format
msgid "Cannot reconcile between different accounts"
msgstr "Cannot reconcile between different accounts"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:72
#, python-format
msgid "Line is already fully reconciled"
msgstr "Line is already fully reconciled"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "Cancel"
msgstr "Cancel"

View File

@@ -0,0 +1,170 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_banking_aggregate_payment
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-06-13 19:35+0000\n"
"PO-Revision-Date: 2013-06-13 19:35+0000\n"
"Last-Translator: <stefan@therp.nl>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_banking_aggregate_payment
#: view:payment.mode:0
msgid "Aggregate payment"
msgstr "Verzamelbetaalopdracht"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "Create"
msgstr "Aanmaken"
#. module: account_banking_aggregate_payment
#: help:payment.mode,aggregate_partner_id:0
msgid "The single partner on the chained payment order"
msgstr "De relatie die geldt als crediteur van het verzameld bedrag"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:134
#, python-format
msgid "Aggregate Payment Order %s"
msgstr "Verzamelbetaling %s"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:230
#, python-format
msgid "Payment order workflow does not go into state \"done\""
msgstr "De workflow van de betaalopdracht komt niet in de status \"verwerkt\""
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:143
#, python-format
msgid "No move line provided for line %s"
msgstr "Er is geen boeking voor regel %s"
#. module: account_banking_aggregate_payment
#: model:ir.model,name:account_banking_aggregate_payment.model_payment_mode
msgid "Payment Mode"
msgstr "Betaalwijze"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:48
#, python-format
msgid "Please only select a single payment order"
msgstr "Er kan maar één betaalopdracht worden geselecteerd"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:147
#, python-format
msgid "Move line %s has already been paid/reconciled"
msgstr "Boekingsregel %s is al afgeletterd"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:44
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:121
#, python-format
msgid "Please select a payment order"
msgstr "Selecteer alstublieft een betaalopdracht"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:125
#, python-format
msgid "This operation can only be performed on a single payment order"
msgstr "Deze bewerking kan alleen worden uitgevoerd op een enkele betaalopdracht"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:155
#, python-format
msgid "Transit %s"
msgstr "Tussenboeking %s"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:191
#, python-format
msgid "Transit reconciliation"
msgstr "Aflettering tussenboeking"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "Export aggregate payment order"
msgstr "Verwerken een verzamelbetalingsopdracht"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:208
#, python-format
msgid "Amount payable"
msgstr "Verschuldigd bedrag"
#. module: account_banking_aggregate_payment
#: field:payment.mode,aggregate_partner_id:0
msgid "Aggregate payment beneficiary"
msgstr "Begunstigde van de verzamelbetaling"
#. module: account_banking_aggregate_payment
#: help:payment.mode,chained_mode_id:0
msgid "The payment type of the chained payment order"
msgstr "De betaalwijze van de gekoppelde betaalopdracht"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:43
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:47
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:65
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:71
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:120
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:124
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:142
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:146
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:229
#, python-format
msgid "Error"
msgstr "Fout"
#. module: account_banking_aggregate_payment
#: model:ir.model,name:account_banking_aggregate_payment.model_banking_export_aggregate
msgid "Execute aggregate payment"
msgstr "Verzamelbetaling boeken"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "When you confirm this order, the total amount will be made payable to the partner that has been set on the payment mode. A new payment order will open in your screen with this one payment."
msgstr "Als u deze betaalopdracht bevestigd, dan wordt het totaalbedrag betaalbaar gemaakt aan de relatie die op de betaalwijze aangegeven staat. In het scherm wordt een nieuwe betaalopdracht geopend met alleen dit totaalbedrag."
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:172
#, python-format
msgid "Reconciliation %s"
msgstr "Aflettering %s"
#. module: account_banking_aggregate_payment
#: field:banking.export.aggregate,payment_order_id:0
msgid "Payment order"
msgstr "Betaalopdracht"
#. module: account_banking_aggregate_payment
#: field:payment.mode,chained_mode_id:0
msgid "Chained payment mode"
msgstr "Gekoppelde betaalwijze"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:66
#, python-format
msgid "Cannot reconcile between different accounts"
msgstr "Kan niet afletteren tussen verschillende grootboekrekeningen"
#. module: account_banking_aggregate_payment
#: code:addons/account_banking_aggregate_payment/model/export_aggregate.py:72
#, python-format
msgid "Line is already fully reconciled"
msgstr "De regel is al afgeletterd"
#. module: account_banking_aggregate_payment
#: view:banking.export.aggregate:0
msgid "Cancel"
msgstr "Annuleer"

View File

@@ -0,0 +1,2 @@
import payment_mode
import export_aggregate

View File

@@ -0,0 +1,268 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import orm, fields
from openerp.tools.translate import _
from openerp import netsvc
class banking_export_aggregate(orm.TransientModel):
_name = 'banking.export.aggregate'
_description = 'Execute aggregate payment order'
_rec_name = 'payment_order_id'
_columns = {
'payment_order_id': fields.many2one(
'payment.order', 'Payment order',
required=True),
}
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if not vals.get('payment_order_id'):
if not context.get('active_ids'):
raise orm.except_orm(
_('Error'),
_('Please select a payment order'))
if len(context['active_ids']) > 1:
raise orm.except_orm(
_('Error'),
_('Please only select a single payment order'))
vals['payment_order_id'] = context['active_ids'][0]
return super(banking_export_aggregate, self).create(
cr, uid, vals, context=context)
def reconcile_lines(self, cr, uid, move_line_ids, context=None):
"""
Reconcile move lines lines, really. ERP core functionality.
"""
reconcile_obj = self.pool.get('account.move.reconcile')
account_move_line_obj = self.pool.get('account.move.line')
currency_obj = self.pool.get('res.currency')
lines = account_move_line_obj.browse(cr, uid, move_line_ids, context=context)
for line in lines[1:]:
if line.account_id != lines[0].account_id:
raise orm.except_orm(
_('Error'),
_('Cannot reconcile between different accounts'))
if any([line.reconcile_id and line.reconcile_id.line_id
for line in lines]):
raise orm.except_orm(
_('Error'),
_('Line is already fully reconciled'))
currency = lines[0].company_id.currency_id
partials = []
line_ids = []
for line in lines:
if line.id not in line_ids:
line_ids.append(line.id)
if line.reconcile_partial_id:
line_ids += line.reconcile_partial_id.line_partial_ids
if line.reconcile_partial_id.id not in partials:
partials.append(line.reconcile_partial_id.id)
total = account_move_line_obj.get_balance(cr, uid, line_ids)
is_zero = currency_obj.is_zero(cr, uid, currency, total)
vals = {
'type': 'auto',
'line_id': is_zero and [(6, 0, line_ids)] or [(6, 0, [])],
'line_partial_ids': is_zero and [(6, 0, [])] or [(6, 0, line_ids)],
}
if partials:
if len(partials) > 1:
reconcile_obj.unlink(
cr, uid, partials[1:], context=context)
reconcile_obj.write(
cr, uid, partials[0],
vals, context=context)
else:
reconcile_obj.create(
cr, uid, vals, context=context)
for line_id in line_ids:
netsvc.LocalService("workflow").trg_trigger(
uid, 'account.move.line', line_id, cr)
return True
def create_aggregate_order(self, cr, uid, ids, context=None):
wiz = self.browse(cr, uid, ids[0], context=context)
account_move_line_obj = self.pool.get('account.move.line')
account_move_obj = self.pool.get('account.move')
payment_order_obj = self.pool.get('payment.order')
payment_order_line_obj = self.pool.get('payment.line')
payment_order_ids = context.get('active_ids', [])
if not payment_order_ids:
raise orm.except_orm(
_('Error'),
_('Please select a payment order'))
if len(payment_order_ids) > 1:
raise orm.except_orm(
_('Error'),
_('This operation can only be performed on a single '
'payment order'))
today = fields.date.context_today(self, cr, uid, context=context)
order = payment_order_obj.browse(
cr, uid, payment_order_ids[0], context=context)
move_id = account_move_obj.create(cr, uid, {
'journal_id': order.mode.transfer_journal_id.id,
'ref': _('Aggregate Payment Order %s') % order.reference,
}, context=context)
counter_move_line_ids = []
for line in order.line_ids:
# basic checks
if not line.move_line_id:
raise orm.except_orm(
_('Error'),
_('No move line provided for line %s') % line.name)
if line.move_line_id.reconcile_id:
raise orm.except_orm(
_('Error'),
_('Move line %s has already been paid/reconciled') %
line.move_line_id.name
)
# TODO: take multicurrency into account?
# create the move line on the transfer account
vals = {
'name': _('Transit %s') % (
line.move_line_id.invoice and
line.move_line_id.invoice.number or
line.move_line_id.ref),
'move_id': move_id,
'partner_id': line.partner_id and line.partner_id.id or False,
'account_id': order.mode.transfer_account_id.id,
'credit': line.amount,
'debit': 0.0,
'date': today,
}
counter_move_line_id = account_move_line_obj.create(
cr, uid, vals, context=context)
counter_move_line_ids.append(counter_move_line_id)
# create the debit move line on the receivable account
vals.update({
'name': _('Reconciliation %s') % (
line.move_line_id.invoice and
line.move_line_id.invoice.number or
line.move_line_id.name),
'account_id': line.move_line_id.account_id.id,
'credit': 0.0,
'debit': line.amount,
})
reconcile_move_line_id = account_move_line_obj.create(
cr, uid, vals, context=context)
self.reconcile_lines(
cr, uid, [reconcile_move_line_id, line.move_line_id.id],
context=context)
total = account_move_line_obj.get_balance(
cr, uid, counter_move_line_ids)
vals = {
'name': _('Transit reconciliation'),
'move_id': move_id,
'partner_id': order.mode.aggregate_partner_id.id,
'account_id': order.mode.transfer_account_id.id,
'debit': total < 0 and -total or 0.0,
'credit': total >= 0 and total or 0.0,
'date': today,
}
aggregate_move_line_id = account_move_line_obj.create(
cr, uid, vals, context=context)
self.reconcile_lines(
cr, uid, counter_move_line_ids + [aggregate_move_line_id],
context=context)
# create the credit move line on the aggregate partner
vals.update({
'name': _('Amount payable'),
'account_id': order.mode.aggregate_partner_id.property_account_payable.id,
'partner_id': order.mode.aggregate_partner_id.id,
'debit': total >= 0 and total or 0.0,
'credit': total < 0 and -total or 0.0,
})
payable_move_line = account_move_line_obj.browse(
cr, uid,
account_move_line_obj.create(
cr, uid, vals, context=context),
context=context)
account_move_obj.post(cr, uid, [move_id], context=context)
wf_service = netsvc.LocalService('workflow')
wf_service.trg_validate(uid, 'payment.order', order.id, 'sent', cr)
wf_service.trg_validate(uid, 'payment.order', order.id, 'done', cr)
order.refresh()
if order.state != 'done':
raise orm.except_orm(
_('Error'),
_('Payment order workflow does not go into state "done"'))
payment_order_id = payment_order_obj.create(
cr, uid, {
'company_id': order.company_id.id,
'mode': order.mode.chained_mode_id.id,
}, context=context)
lines2bank = account_move_line_obj.line2bank(
cr, uid, [payable_move_line.id], order.mode.id, context)
payment_order_line_obj.create(cr, uid,{
'move_line_id': payable_move_line.id,
'amount_currency': payable_move_line.amount_to_pay,
'bank_id': lines2bank.get(payable_move_line.id),
'order_id': payment_order_id,
'partner_id': order.mode.aggregate_partner_id.id,
'communication': order.reference.replace('/', ''),
'communication2': False,
'state': 'structured',
'date': today,
'currency': (
line.move_line_id.journal_id.currency.id or
line.move_line_id.journal_id.company_id.currency_id.id),
}, context=context)
return {
'name': payment_order_obj._description,
'view_type': 'form',
'view_mode': 'form',
'res_model': payment_order_obj._name,
'domain': [],
'context': context,
'type': 'ir.actions.act_window',
'target': 'current',
'res_id': payment_order_id,
'nodestroy': True,
}

View File

@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import orm, fields
class payment_mode(orm.Model):
_inherit = "payment.mode"
_columns = {
'aggregate_partner_id': fields.many2one(
'res.partner', 'Aggregate payment beneficiary',
help="The single partner on the chained payment order",
),
'chained_mode_id': fields.many2one(
'payment.mode', 'Chained payment mode',
help="The payment type of the chained payment order"),
}

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="banking_export_aggregate_view" model="ir.ui.view">
<field name="name">Export aggregate payment order</field>
<field name="model">banking.export.aggregate</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Export aggregate payment order">
<label string="When you confirm this order, the total
amount will be made payable to the partner
that has been set on the payment mode. A
new payment order will open in your screen
with this one payment."/>
<group col="2" colspan="1">
<button icon="gtk-close"
special="cancel"
string="Cancel"
/>
<button icon="gtk-ok"
string="Create"
name="create_aggregate_order"
type="object"
/>
</group>
</form>
</field>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_payment_mode_form" model="ir.ui.view">
<field name="name">Adaptations for aggregate payment modes</field>
<field name="model">payment.mode</field>
<field name="inherit_id"
ref="account_direct_debit.view_payment_mode_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="payment_term_ids" position="after">
<group colspan="2" col="2" string="Aggregate payment"
attrs="{
'invisible': [
('type', '!=',
%(account_banking_aggregate_payment.type_aggregate)d
)]}">
<field name="aggregate_partner_id"
attrs="{'required': [
('type', '=',
%(account_banking_aggregate_payment.type_aggregate)d
)]}"
/>
<field name="chained_mode_id"
attrs="{'required': [
('type', '=',
%(account_banking_aggregate_payment.type_aggregate)d
)]}"
/>
</group>
</field>
<field name="transfer_account_id" position="attributes">
<attribute name="attrs">{
'required': [
('type', '=',
%(account_banking_aggregate_payment.type_aggregate)d
)]}</attribute>
</field>
<field name="transfer_journal_id" position="attributes">
<attribute name="attrs">{
'required': [
('type', '=',
%(account_banking_aggregate_payment.type_aggregate)d
)]}</attribute>
</field>
</field>
</record>
</data>
</openerp>