Luis M. Ontalba
7 years ago
committed by
Siarhei Lozikau
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