Luis M. Ontalba
7 years ago
committed by
Pedro M. Baeza
13 changed files with 594 additions and 0 deletions
-
64account_bank_statement_import_move_line/README.rst
-
5account_bank_statement_import_move_line/__init__.py
-
22account_bank_statement_import_move_line/__manifest__.py
-
180account_bank_statement_import_move_line/i18n/es.po
-
4account_bank_statement_import_move_line/models/__init__.py
-
37account_bank_statement_import_move_line/models/account_move_line.py
-
BINaccount_bank_statement_import_move_line/static/description/icon.png
-
4account_bank_statement_import_move_line/tests/__init__.py
-
73account_bank_statement_import_move_line/tests/test_account_bank_statement_import_move_line.py
-
19account_bank_statement_import_move_line/views/account_bank_statement_view.xml
-
4account_bank_statement_import_move_line/wizards/__init__.py
-
119account_bank_statement_import_move_line/wizards/account_statement_line_create.py
-
63account_bank_statement_import_move_line/wizards/account_statement_line_create_view.xml
@ -0,0 +1,64 @@ |
|||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg |
|||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |
|||
:alt: License: AGPL-3 |
|||
|
|||
======================================= |
|||
Account Bank Statement Import Move Line |
|||
======================================= |
|||
|
|||
This module adds a button to bank statement form view to open a wizard to allow |
|||
filtering, selecting and importing lines form journal items into the bank |
|||
statement. |
|||
|
|||
Usage |
|||
===== |
|||
|
|||
#. Go to Invoicing > Dashboard. |
|||
#. Create a new bank statement from a bank journal. |
|||
#. Click button "Import Journal Items". |
|||
#. Select filtering options. |
|||
#. Click on button "Add All Move Lines" to auto-select the move lines matching |
|||
the selected criteria or click on Add an item to manually select the move |
|||
lines filtered by the criteria. |
|||
#. Click on button "Create Statement Lines". |
|||
|
|||
|
|||
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas |
|||
:alt: Try me on Runbot |
|||
:target: https://runbot.odoo-community.org/runbot/174/10.0 |
|||
|
|||
Bug Tracker |
|||
=========== |
|||
|
|||
Bugs are tracked on `GitHub Issues |
|||
<https://github.com/OCA/bank-statement-import/issues>`_. In case of trouble, |
|||
please check there if your issue has already been reported. If you spotted |
|||
it first, help us smash it by providing detailed and welcomed feedback. |
|||
|
|||
Credits |
|||
======= |
|||
|
|||
Images |
|||
------ |
|||
|
|||
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_. |
|||
|
|||
Contributors |
|||
------------ |
|||
|
|||
* Luis M. Ontalba luis.martinez@tecnativa.com> |
|||
|
|||
Maintainer |
|||
---------- |
|||
|
|||
.. image:: https://odoo-community.org/logo.png |
|||
:alt: Odoo Community Association |
|||
:target: https://odoo-community.org |
|||
|
|||
This module is maintained by the OCA. |
|||
|
|||
OCA, or the Odoo Community Association, is a nonprofit organization whose |
|||
mission is to support the collaborative development of Odoo features and |
|||
promote its widespread use. |
|||
|
|||
To contribute to this module, please visit https://odoo-community.org. |
@ -0,0 +1,5 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html |
|||
|
|||
from . import models |
|||
from . import wizards |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Tecnativa - Luis M. Ontalba |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html |
|||
|
|||
{ |
|||
'name': 'Bank statement import move lines', |
|||
'version': '10.0.1.0.0', |
|||
'category': 'Accounting', |
|||
'author': 'Tecnativa, ' |
|||
'Odoo Community Association (OCA)', |
|||
'website': 'https://www.tecnativa.com', |
|||
'depends': [ |
|||
'account', |
|||
], |
|||
'data': [ |
|||
'wizards/account_statement_line_create_view.xml', |
|||
'views/account_bank_statement_view.xml', |
|||
], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
} |
@ -0,0 +1,180 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * account_bank_statement_import_move_line |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 10.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2017-08-09 15:32+0000\n" |
|||
"PO-Revision-Date: 2017-08-09 15:32+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_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Add All Move Lines" |
|||
msgstr "Añadir todas las líneas" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: selection:account.statement.line.create,target_move:0 |
|||
msgid "All Entries" |
|||
msgstr "Todos los asientos" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: selection:account.statement.line.create,target_move:0 |
|||
msgid "All Posted Entries" |
|||
msgstr "Todos los asientos confirmados" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_allow_blocked |
|||
msgid "Allow Litigation Move Lines" |
|||
msgstr "Permitir apuntes en litígio" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_statement_id |
|||
msgid "Bank Statement" |
|||
msgstr "Extracto bancario" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Cancel" |
|||
msgstr "Cancelar" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Choose Move Lines Filter Options" |
|||
msgstr "Elegir opciones de filtro de apuntes" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Click on Add All Move Lines to auto-select the move lines matching the above criteria or click on Add an item to manually select the move lines filtered by the above criteria." |
|||
msgstr "Clic en Añadir todas las líneas para seleccionar automáticamente las líneas de movimiento que coinciden con los criterios anteriores o clic en Agregar un elemento para seleccionar manualmente las líneas de movimiento filtradas por los criterios anteriores." |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.actions.act_window,name:account_bank_statement_import_move_line.account_statement_line_create_action |
|||
msgid "Create Lines from Move Lines" |
|||
msgstr "Crear Líneas desde apuntes" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Create Statement Lines" |
|||
msgstr "Crear líneas del extracto" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_create_uid |
|||
msgid "Created by" |
|||
msgstr "Creado por" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_create_date |
|||
msgid "Created on" |
|||
msgstr "Creado el" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_display_name |
|||
msgid "Display Name" |
|||
msgstr "Nombre a mostrar" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: selection:account.statement.line.create,date_type:0 |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_due_date |
|||
msgid "Due Date" |
|||
msgstr "Fecha vencimiento" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_id |
|||
msgid "ID" |
|||
msgstr "ID" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.view_bank_statement_form |
|||
msgid "Import Journal Items" |
|||
msgstr "Importar apuntes contables" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model,name:account_bank_statement_import_move_line.model_account_move_line |
|||
msgid "Journal Item" |
|||
msgstr "Apunte contable" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_journal_ids |
|||
msgid "Journals Filter" |
|||
msgstr "Filtro de diarios" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Keep empty for using all journals" |
|||
msgstr "Dejar vacío para seleccionar todos los diarios" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create___last_update |
|||
msgid "Last Modified on" |
|||
msgstr "Última modificación en" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_write_uid |
|||
msgid "Last Updated by" |
|||
msgstr "Última actualización por" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_write_date |
|||
msgid "Last Updated on" |
|||
msgstr "Última actualización el" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_invoice |
|||
msgid "Linked to an Invoice or Refund" |
|||
msgstr "Vinculado a factura o devolución" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: selection:account.statement.line.create,date_type:0 |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_move_date |
|||
msgid "Move Date" |
|||
msgstr "Fecha del apunte" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_move_line_ids |
|||
msgid "Move Lines" |
|||
msgstr "Apuntes contables" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_partner_id |
|||
msgid "Partner Related" |
|||
msgstr "Empresa relacionada" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: code:addons/account_bank_statement_import_move_line/wizards/account_statement_line_create.py:96 |
|||
#, python-format |
|||
msgid "Select Move Lines to Create Statement" |
|||
msgstr "Seleccionar apuntes para crear extracto" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Selected Move Lines to Create Lines" |
|||
msgstr "Apuntes seleccionados para crear líneas" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_target_move |
|||
msgid "Target Moves" |
|||
msgstr "Movimientos destino" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.ui.view,arch_db:account_bank_statement_import_move_line.account_statement_line_create_view_form |
|||
msgid "Total Residual" |
|||
msgstr "Total Residual" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model.fields,field_description:account_bank_statement_import_move_line.field_account_statement_line_create_date_type |
|||
msgid "Type of Date Filter" |
|||
msgstr "Tipo de filtro por fecha" |
|||
|
|||
#. module: account_bank_statement_import_move_line |
|||
#: model:ir.model,name:account_bank_statement_import_move_line.model_account_statement_line_create |
|||
msgid "Wizard to create statement lines" |
|||
msgstr "Asistente para crear líneas de extracto" |
|||
|
@ -0,0 +1,4 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html |
|||
|
|||
from . import account_move_line |
@ -0,0 +1,37 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Tecnativa - Luis M. Ontalba |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html |
|||
|
|||
from odoo import api, models |
|||
|
|||
|
|||
class AccountMoveLine(models.Model): |
|||
_inherit = 'account.move.line' |
|||
|
|||
@api.multi |
|||
def _prepare_statement_line_vals(self, statement): |
|||
self.ensure_one() |
|||
assert statement, 'Missing statement' |
|||
amount = 0.0 |
|||
if self.debit > 0: |
|||
amount = self.debit |
|||
elif self.credit > 0: |
|||
amount = -self.credit |
|||
vals = { |
|||
'name': self.name or '?', |
|||
'amount': amount, |
|||
'partner_id': self.partner_id.id, |
|||
'statement_id': statement.id, |
|||
'ref': self.ref, |
|||
'date': self.date_maturity, |
|||
'amount_currency': self.amount_currency, |
|||
'currency_id': self.currency_id.id, |
|||
} |
|||
return vals |
|||
|
|||
@api.multi |
|||
def create_statement_line_from_move_line(self, statement): |
|||
abslo = self.env['account.bank.statement.line'] |
|||
for mline in self: |
|||
abslo.create(mline._prepare_statement_line_vals(statement)) |
|||
return |
After Width: 128 | Height: 128 | Size: 9.2 KiB |
@ -0,0 +1,4 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0 |
|||
|
|||
from . import test_account_bank_statement_import_move_line |
@ -0,0 +1,73 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Tecnativa - Luis M. Ontalba |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0 |
|||
|
|||
from odoo.tests import common |
|||
from odoo import fields |
|||
|
|||
|
|||
class TestAccountBankStatementImportMoveLine(common.SavepointCase): |
|||
@classmethod |
|||
def setUpClass(cls): |
|||
super(TestAccountBankStatementImportMoveLine, cls).setUpClass() |
|||
cls.account_type = cls.env['account.account.type'].create({ |
|||
'name': 'Test Account Type'}) |
|||
cls.a_receivable = cls.env['account.account'].create({ |
|||
'code': 'TAA', |
|||
'name': 'Test Receivable Account', |
|||
'internal_type': 'receivable', |
|||
'user_type_id': cls.account_type.id, |
|||
}) |
|||
cls.partner = cls.env['res.partner'].create({ |
|||
'name': 'Test Partner 2', |
|||
'parent_id': False, |
|||
}) |
|||
cls.journal = cls.env['account.journal'].create({ |
|||
'name': 'Test Journal', |
|||
'type': 'bank', |
|||
}) |
|||
cls.invoice = cls.env['account.invoice'].create({ |
|||
'name': 'Test Invoice 3', |
|||
'partner_id': cls.partner.id, |
|||
'type': 'out_invoice', |
|||
'journal_id': cls.journal.id, |
|||
'invoice_line_ids': [(0, 0, { |
|||
'account_id': cls.a_receivable.id, |
|||
'name': 'Test line', |
|||
'quantity': 1.0, |
|||
'price_unit': 100.00, |
|||
})], |
|||
}) |
|||
cls.statement = cls.env['account.bank.statement'].create({ |
|||
'journal_id': cls.journal.id}) |
|||
|
|||
def test_global(self): |
|||
self.invoice.action_invoice_open() |
|||
self.assertTrue(self.invoice.move_id) |
|||
self.invoice.move_id.post() |
|||
wizard_o = self.env['account.statement.line.create'] |
|||
context = wizard_o._context.copy() |
|||
context.update({ |
|||
'active_model': 'account.bank.statement', |
|||
'active_id': self.statement.id, |
|||
}) |
|||
wizard = wizard_o.with_context(context).create({ |
|||
'statement_id': self.statement.id, |
|||
'partner_id': self.partner.id, |
|||
'journal_ids': [(4, self.journal.id)], |
|||
'allow_blocked': True, |
|||
'date_type': 'move', |
|||
'move_date': fields.Date.today(), |
|||
'invoice': False, |
|||
}) |
|||
wizard.populate() |
|||
self.assertTrue(len(wizard.move_line_ids), 2) |
|||
wizard.invoice = True |
|||
wizard.move_line_filters_change() |
|||
wizard.populate() |
|||
self.assertTrue(len(wizard.move_line_ids), 1) |
|||
line = wizard.move_line_ids[0] |
|||
self.assertEqual(line.debit, self.invoice.amount_total) |
|||
wizard.create_statement_lines() |
|||
line = self.statement.line_ids[0] |
|||
self.assertEqual(line.amount, self.invoice.amount_total) |
@ -0,0 +1,19 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
|
|||
<odoo> |
|||
|
|||
<record id="view_bank_statement_form" model="ir.ui.view"> |
|||
<field name="name">account.bank.statement.form.population</field> |
|||
<field name="model">account.bank.statement</field> |
|||
<field name="inherit_id" ref="account.view_bank_statement_form"/> |
|||
<field name="arch" type="xml"> |
|||
<field name="all_lines_reconciled" position="after"> |
|||
<button name="%(account_statement_line_create_action)d" |
|||
string="Import Journal Items" type="action" |
|||
class="oe_highlight" |
|||
attrs="{'invisible':[('state', '!=', 'open')]}"/> |
|||
</field> |
|||
</field> |
|||
</record> |
|||
|
|||
</odoo> |
@ -0,0 +1,4 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html |
|||
|
|||
from . import account_statement_line_create |
@ -0,0 +1,119 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Tecnativa - Luis M. Ontalba |
|||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html |
|||
|
|||
from odoo import _, api, fields, models |
|||
|
|||
|
|||
class AccountStatementLineCreate(models.TransientModel): |
|||
_name = 'account.statement.line.create' |
|||
_description = 'Wizard to create statement lines' |
|||
|
|||
statement_id = fields.Many2one( |
|||
'account.bank.statement', string='Bank Statement') |
|||
partner_id = fields.Many2one('res.partner', string='Partner Related', |
|||
domain=['|', ('parent_id', '=', False), |
|||
('is_company', '=', True)]) |
|||
journal_ids = fields.Many2many( |
|||
'account.journal', string='Journals Filter') |
|||
target_move = fields.Selection([ |
|||
('posted', 'All Posted Entries'), |
|||
('all', 'All Entries'), |
|||
], string='Target Moves') |
|||
allow_blocked = fields.Boolean( |
|||
string='Allow Litigation Move Lines') |
|||
invoice = fields.Boolean( |
|||
string='Linked to an Invoice or Refund') |
|||
date_type = fields.Selection([ |
|||
('due', 'Due Date'), |
|||
('move', 'Move Date'), |
|||
], string="Type of Date Filter", required=True) |
|||
due_date = fields.Date(string="Due Date", |
|||
default=fields.Date.context_today) |
|||
move_date = fields.Date(string='Move Date', |
|||
default=fields.Date.context_today) |
|||
move_line_ids = fields.Many2many( |
|||
'account.move.line', string='Move Lines') |
|||
|
|||
@api.model |
|||
def default_get(self, field_list): |
|||
res = super(AccountStatementLineCreate, self).default_get(field_list) |
|||
context = self.env.context |
|||
assert context.get('active_model') == 'account.bank.statement',\ |
|||
'active_model should be account.bank.statement' |
|||
assert context.get('active_id'), 'Missing active_id in context !' |
|||
statement = self.env[ |
|||
'account.bank.statement'].browse(context['active_id']) |
|||
res.update({ |
|||
'target_move': 'posted', |
|||
'date_type': 'due', |
|||
'invoice': True, |
|||
'statement_id': statement.id, |
|||
}) |
|||
return res |
|||
|
|||
@api.multi |
|||
def _prepare_move_line_domain(self): |
|||
self.ensure_one() |
|||
domain = [('reconciled', '=', False), |
|||
('account_id.internal_type', 'in', ('payable', |
|||
'receivable')), |
|||
('company_id', '=', self.env.user.company_id.id)] |
|||
if self.journal_ids: |
|||
domain += [('journal_id', 'in', self.journal_ids.ids)] |
|||
else: |
|||
journals = self.env['account.journal'].search([]) |
|||
domain += [('journal_id', 'in', journals.ids)] |
|||
if self.partner_id: |
|||
domain += [('partner_id', '=', self.partner_id.id)] |
|||
if self.target_move == 'posted': |
|||
domain += [('move_id.state', '=', 'posted')] |
|||
if not self.allow_blocked: |
|||
domain += [('blocked', '!=', True)] |
|||
if self.date_type == 'due': |
|||
domain += [ |
|||
'|', |
|||
('date_maturity', '<=', self.due_date), |
|||
('date_maturity', '=', False)] |
|||
elif self.date_type == 'move': |
|||
domain.append(('date', '<=', self.move_date)) |
|||
if self.invoice: |
|||
domain.append(('invoice_id', '!=', False)) |
|||
paylines = self.env['account.payment'].search([ |
|||
('state', 'in', ('draft', 'posted', 'sent')), |
|||
('move_line_ids', '!=', False)]) |
|||
if paylines: |
|||
move_in_payment_ids = paylines.mapped('move_line_ids.id') |
|||
domain += [('id', 'not in', move_in_payment_ids)] |
|||
return domain |
|||
|
|||
@api.multi |
|||
def populate(self): |
|||
domain = self._prepare_move_line_domain() |
|||
lines = self.env['account.move.line'].search(domain) |
|||
self.move_line_ids = lines |
|||
action = { |
|||
'name': _('Select Move Lines to Create Statement'), |
|||
'type': 'ir.actions.act_window', |
|||
'res_model': 'account.statement.line.create', |
|||
'view_mode': 'form', |
|||
'target': 'new', |
|||
'res_id': self.id, |
|||
'context': self._context, |
|||
} |
|||
return action |
|||
|
|||
@api.onchange( |
|||
'date_type', 'move_date', 'due_date', 'journal_ids', 'invoice', |
|||
'target_move', 'allow_blocked', 'partner_id') |
|||
def move_line_filters_change(self): |
|||
domain = self._prepare_move_line_domain() |
|||
res = {'domain': {'move_line_ids': domain}} |
|||
return res |
|||
|
|||
@api.multi |
|||
def create_statement_lines(self): |
|||
if self.move_line_ids: |
|||
self.move_line_ids.create_statement_line_from_move_line( |
|||
self.statement_id) |
|||
return True |
@ -0,0 +1,63 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<record id="account_statement_line_create_view_form" model="ir.ui.view"> |
|||
<field name="name">account_statement_line_create_form</field> |
|||
<field name="model">account.statement.line.create</field> |
|||
<field name="arch" type="xml"> |
|||
<form string="Choose Move Lines Filter Options"> |
|||
<group name="main"> |
|||
<field name="statement_id" invisible="1"/> |
|||
<field name="partner_id"/> |
|||
<field name="date_type"/> |
|||
<field name="move_date" |
|||
attrs="{'required': [('date_type', '=', 'move')], |
|||
'invisible': [('date_type', '!=', 'move')]}"/> |
|||
<field name="due_date" |
|||
attrs="{'required': [('date_type', '=', 'due')], |
|||
'invisible': [('date_type', '!=', 'due')]}"/> |
|||
<field name="journal_ids" widget="many2many_tags" |
|||
placeholder="Keep empty for using all journals"/> |
|||
<field name="target_move" widget="radio"/> |
|||
<field name="invoice"/> |
|||
<field name="allow_blocked"/> |
|||
<label string="Click on Add All Move Lines to auto-select the move lines matching the above criteria or click on Add an item to manually select the move lines filtered by the above criteria." colspan="2"/> |
|||
<button name="populate" type="object" string="Add All Move Lines"/> |
|||
</group> |
|||
<group name="move_lines" |
|||
string="Selected Move Lines to Create Lines"> |
|||
<field name="move_line_ids" nolabel="1"> |
|||
<tree> |
|||
<field name="date"/> |
|||
<field name="move_id" required="0"/> |
|||
<field name="journal_id"/> |
|||
<field name="partner_id"/> |
|||
<field name="account_id"/> |
|||
<field name="date_maturity"/> |
|||
<field name="debit"/> |
|||
<field name="credit"/> |
|||
<field name="amount_residual" sum="Total Residual"/> |
|||
<field name="amount_currency"/> |
|||
<field name="amount_residual_currency"/> |
|||
<field name="company_currency_id" invisible="1"/> |
|||
</tree> |
|||
</field> |
|||
</group> |
|||
<footer> |
|||
<button name="create_statement_lines" type="object" |
|||
string="Create Statement Lines" class="oe_highlight"/> |
|||
<button string="Cancel" special="cancel" class="oe_link"/> |
|||
</footer> |
|||
</form> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="account_statement_line_create_action" |
|||
model="ir.actions.act_window"> |
|||
<field name="name">Create Lines from Move Lines</field> |
|||
<field name="res_model">account.statement.line.create</field> |
|||
<field name="view_mode">form</field> |
|||
<field name="target">new</field> |
|||
</record> |
|||
|
|||
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue