committed by
Pieter Paulussen
17 changed files with 1057 additions and 0 deletions
-
49account_move_line_report_xls/README.rst
-
11account_move_line_report_xls/__init__.py
-
15account_move_line_report_xls/__manifest__.py
-
181account_move_line_report_xls/i18n/fr.po
-
181account_move_line_report_xls/i18n/nl.po
-
1account_move_line_report_xls/models/__init__.py
-
60account_move_line_report_xls/models/account_move_line.py
-
1account_move_line_report_xls/readme/CONTRIBUTORS.rst
-
2account_move_line_report_xls/readme/DESCRIPTION.rst
-
27account_move_line_report_xls/readme/USAGE.rst
-
1account_move_line_report_xls/report/__init__.py
-
401account_move_line_report_xls/report/account_move_line_xlsx.py
-
15account_move_line_report_xls/report/account_move_line_xlsx.xml
-
BINaccount_move_line_report_xls/static/description/icon.png
-
79account_move_line_report_xls/static/description/icon.svg
-
1account_move_line_report_xls/tests/__init__.py
-
32account_move_line_report_xls/tests/test_aml_report_xlsx.py
@ -0,0 +1,49 @@ |
|||||
|
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png |
||||
|
:target: https://www.gnu.org/licenses/agpl |
||||
|
:alt: License: AGPL-3 |
||||
|
|
||||
|
========================== |
||||
|
Journal Items Excel Export |
||||
|
========================== |
||||
|
|
||||
|
This module extends the functionality of the journal items |
||||
|
('account.move.line') list view and allow you to export the selected lines. |
||||
|
|
||||
|
Installation |
||||
|
============ |
||||
|
|
||||
|
To install this module, you need also the **report_xlsx_helper** |
||||
|
module located in: |
||||
|
|
||||
|
https://github.com/OCA/reporting-engine |
||||
|
|
||||
|
Usage |
||||
|
===== |
||||
|
|
||||
|
To use this module, you need to: |
||||
|
|
||||
|
* go to the list view of the journal items |
||||
|
* select the lines you wish to export |
||||
|
* click on the button on top to export |
||||
|
|
||||
|
The Excel export can be tailored to your exact needs via the following methods |
||||
|
of the 'account.move.line' object: |
||||
|
|
||||
|
* **_report_xlsx_fields** |
||||
|
|
||||
|
Add/drop columns or change order from the list of columns that are defined |
||||
|
in the Excel template. |
||||
|
|
||||
|
The following fields are defined in the Excel template: |
||||
|
|
||||
|
move, name, date, journal, period, partner, account, |
||||
|
date_maturity, debit, credit, balance, |
||||
|
reconcile, reconcile_partial, analytic_account, |
||||
|
ref, partner_ref, tax_code, tax_amount, amount_residual, |
||||
|
amount_currency, currency_name, company_currency, |
||||
|
amount_residual_currency, product, product_ref', product_uom, quantity, |
||||
|
statement, invoice, narration, blocked |
||||
|
|
||||
|
* **_report_xlsx_template** |
||||
|
|
||||
|
Change/extend the Excel template. |
@ -0,0 +1,11 @@ |
|||||
|
from . import models |
||||
|
|
||||
|
try: |
||||
|
from . import report |
||||
|
except ImportError: |
||||
|
import logging |
||||
|
|
||||
|
logging.getLogger("odoo.module").warning( |
||||
|
"""report_xlsx_helper not available in addons path. |
||||
|
account_move_line_report_xls will not be usable""" |
||||
|
) |
@ -0,0 +1,15 @@ |
|||||
|
# Copyright 2009-2020 Noviat. |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
{ |
||||
|
"name": "Account Move Line XLSX export", |
||||
|
"version": "13.0.1.0.0", |
||||
|
"license": "AGPL-3", |
||||
|
"author": "Noviat, Odoo Community Association (OCA)", |
||||
|
"category": "Accounting & Finance", |
||||
|
"website": "https://github.com/OCA/account-financial-reporting", |
||||
|
"summary": "Journal Items Excel export", |
||||
|
"depends": ["account", "report_xlsx_helper"], |
||||
|
"data": ["report/account_move_line_xlsx.xml"], |
||||
|
"installable": True, |
||||
|
} |
@ -0,0 +1,181 @@ |
|||||
|
# French translation of Odoo. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * account_move_line_report_xls |
||||
|
# |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 8.0\n" |
||||
|
"Report-Msgid-Bugs-To: support@noviat.com\n" |
||||
|
"POT-Creation-Date: 2016-05-16 12:31:16.568000\n" |
||||
|
"PO-Revision-Date: 2016-05-16 12:31:16.568000\n" |
||||
|
"Last-Translator: Luc De Meyer (Noviat nv/sa)\n" |
||||
|
"Language-Team: \n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: 8bit\n" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Journal Items" |
||||
|
msgstr "Écritures comptables" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Entry" |
||||
|
msgstr "Écriture" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Name" |
||||
|
msgstr "Nom" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Reference" |
||||
|
msgstr "Référence" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Effective Date" |
||||
|
msgstr "Date" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Period" |
||||
|
msgstr "Période" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Partner" |
||||
|
msgstr "Partenaire" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Partner Reference" |
||||
|
msgstr "Réf. Partenaire" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Account" |
||||
|
msgstr "Compte" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Maturity Date" |
||||
|
msgstr "Date d'échéance" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Debit" |
||||
|
msgstr "Débit" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Credit" |
||||
|
msgstr "Crédit" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Balance" |
||||
|
msgstr "Solde" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Rec." |
||||
|
msgstr "Let." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Part. Rec." |
||||
|
msgstr "Let. Part." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Tax Code" |
||||
|
msgstr "Case TVA" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Tax/Base Amount" |
||||
|
msgstr "Montant TVA/Base" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Am. Currency" |
||||
|
msgstr "Montant devise" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Curr." |
||||
|
msgstr "Dev." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Journal" |
||||
|
msgstr "Journal" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Comp. Curr." |
||||
|
msgstr "Dev. Soc." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Analytic Account" |
||||
|
msgstr "Compte analytique" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Analytic Account Reference" |
||||
|
msgstr "Référence compte analytique" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Product" |
||||
|
msgstr "Article" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Product Reference" |
||||
|
msgstr "Réf. Article" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Unit of Measure" |
||||
|
msgstr "Unité de mesure" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Qty" |
||||
|
msgstr "Qty" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Statement" |
||||
|
msgstr "Relevé" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Invoice" |
||||
|
msgstr "Facture" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Residual Amount" |
||||
|
msgstr "Montant résiduel" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Res. Am. in Curr." |
||||
|
msgstr "Montant résiduel en dev." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Notes" |
||||
|
msgstr "Notes" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Lit." |
||||
|
msgstr "Lit." |
||||
|
|
@ -0,0 +1,181 @@ |
|||||
|
# Dutch translation of Odoo. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * account_move_line_report_xls |
||||
|
# |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 8.0\n" |
||||
|
"Report-Msgid-Bugs-To: support@noviat.com\n" |
||||
|
"POT-Creation-Date: 2016-05-16 12:31:16.564000\n" |
||||
|
"PO-Revision-Date: 2016-05-16 12:31:16.564000\n" |
||||
|
"Last-Translator: Luc De Meyer (Noviat nv/sa)\n" |
||||
|
"Language-Team: \n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: 8bit\n" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Journal Items" |
||||
|
msgstr "Boekingsregels" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Entry" |
||||
|
msgstr "Boeking" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Name" |
||||
|
msgstr "Naam" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Reference" |
||||
|
msgstr "Referentie" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Effective Date" |
||||
|
msgstr "Datum" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Period" |
||||
|
msgstr "Periode" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Partner" |
||||
|
msgstr "Partner" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Partner Reference" |
||||
|
msgstr "Ref. Partner" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Account" |
||||
|
msgstr "Rekening" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Maturity Date" |
||||
|
msgstr "Vervaldatum" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Debit" |
||||
|
msgstr "Debet" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Credit" |
||||
|
msgstr "Credit" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Balance" |
||||
|
msgstr "Saldo" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Rec." |
||||
|
msgstr "Rec." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Part. Rec." |
||||
|
msgstr "Rec. Part." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Tax Code" |
||||
|
msgstr "BTW vak" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Tax/Base Amount" |
||||
|
msgstr "Bedrag BTW/Mvh" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Am. Currency" |
||||
|
msgstr "Bedrag valuta" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Curr." |
||||
|
msgstr "Val." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Journal" |
||||
|
msgstr "Dagboek" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Comp. Curr." |
||||
|
msgstr "Bedr. Val." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Analytic Account" |
||||
|
msgstr "Kostenplaats" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Analytic Account Reference" |
||||
|
msgstr "Kostenplaats referentie" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Product" |
||||
|
msgstr "Product" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Product Reference" |
||||
|
msgstr "Ref. Product" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Unit of Measure" |
||||
|
msgstr "Maateenheid" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Qty" |
||||
|
msgstr "HvH" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Statement" |
||||
|
msgstr "Uitreksel" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Invoice" |
||||
|
msgstr "Factuur" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Residual Amount" |
||||
|
msgstr "Restbedrag" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Res. Am. in Curr." |
||||
|
msgstr "Restbedrag in val." |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Notes" |
||||
|
msgstr "Notities" |
||||
|
|
||||
|
#. module: account_move_line_report_xls |
||||
|
#: report:move.line.list.xls:0 |
||||
|
msgid "Lit." |
||||
|
msgstr "Lit." |
||||
|
|
@ -0,0 +1 @@ |
|||||
|
from . import account_move_line |
@ -0,0 +1,60 @@ |
|||||
|
# Copyright 2009-2020 Noviat. |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import api, models |
||||
|
|
||||
|
from odoo.addons.report_xlsx_helper.report.report_xlsx_abstract import ( |
||||
|
ReportXlsxAbstract, |
||||
|
) |
||||
|
|
||||
|
_render = ReportXlsxAbstract._render |
||||
|
|
||||
|
|
||||
|
class AccountMoveLine(models.Model): |
||||
|
_inherit = "account.move.line" |
||||
|
|
||||
|
# Change list in custom module e.g. to add/drop columns or change order |
||||
|
@api.model |
||||
|
def _report_xlsx_fields(self): |
||||
|
return [ |
||||
|
"move", |
||||
|
"name", |
||||
|
"date", |
||||
|
"journal", |
||||
|
"partner", |
||||
|
"account", |
||||
|
"date_maturity", |
||||
|
"debit", |
||||
|
"credit", |
||||
|
"balance", |
||||
|
"full_reconcile", |
||||
|
"reconcile_amount", |
||||
|
# 'analytic_account_name', 'analytic_account', |
||||
|
# 'ref', 'partner_ref', |
||||
|
# 'amount_residual', 'amount_currency', 'currency_name', |
||||
|
# 'company_currency', 'amount_residual_currency', |
||||
|
# 'product', 'product_ref', 'product_uom', 'quantity', |
||||
|
# 'statement', 'invoice', 'narration', 'blocked', |
||||
|
# 'id', 'matched_debit_ids', 'matched_credit_ids', |
||||
|
] |
||||
|
|
||||
|
# Change/Add Template entries |
||||
|
@api.model |
||||
|
def _report_xlsx_template(self): |
||||
|
""" |
||||
|
Template updates, e.g. |
||||
|
|
||||
|
my_change = { |
||||
|
'move': { |
||||
|
'header': { |
||||
|
'value': 'My Move Title', |
||||
|
}, |
||||
|
'lines': { |
||||
|
'value': _render("line.move_id.name or ''"), |
||||
|
}, |
||||
|
'width': 20, |
||||
|
}, |
||||
|
} |
||||
|
return my_change |
||||
|
""" |
||||
|
return {} |
@ -0,0 +1 @@ |
|||||
|
* Luc De Meyer <luc.demeyer@noviat.com> |
@ -0,0 +1,2 @@ |
|||||
|
This module extends the functionality of the journal items |
||||
|
('account.move.line') list view and allow you to export the selected lines. |
@ -0,0 +1,27 @@ |
|||||
|
To use this module, you need to: |
||||
|
|
||||
|
* go to the list view of the journal items |
||||
|
* select the lines you wish to export |
||||
|
* click on the button on top to export |
||||
|
|
||||
|
The Excel export can be tailored to your exact needs via the following methods |
||||
|
of the 'account.move.line' object: |
||||
|
|
||||
|
* **_report_xlsx_fields** |
||||
|
|
||||
|
Add/drop columns or change order from the list of columns that are defined |
||||
|
in the Excel template. |
||||
|
|
||||
|
The following fields are defined in the Excel template: |
||||
|
|
||||
|
move, name, date, journal, period, partner, account, |
||||
|
date_maturity, debit, credit, balance, |
||||
|
reconcile, reconcile_partial, analytic_account, |
||||
|
ref, partner_ref, tax_code, tax_amount, amount_residual, |
||||
|
amount_currency, currency_name, company_currency, |
||||
|
amount_residual_currency, product, product_ref', product_uom, quantity, |
||||
|
statement, invoice, narration, blocked |
||||
|
|
||||
|
* **_report_xlsx_template** |
||||
|
|
||||
|
Change/extend the Excel template. |
@ -0,0 +1 @@ |
|||||
|
from . import account_move_line_xlsx |
@ -0,0 +1,401 @@ |
|||||
|
# Copyright 2009-2020 Noviat |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
import logging |
||||
|
|
||||
|
from odoo import models |
||||
|
from odoo.tools.translate import translate |
||||
|
|
||||
|
_logger = logging.getLogger(__name__) |
||||
|
|
||||
|
IR_TRANSLATION_NAME = "move.line.list.xls" |
||||
|
|
||||
|
|
||||
|
class AccountMoveLineXlsx(models.AbstractModel): |
||||
|
_name = "report.account_move_line_report_xls.account_move_line_xlsx" |
||||
|
_inherit = "report.report_xlsx.abstract" |
||||
|
|
||||
|
def _(self, src): |
||||
|
lang = self.env.context.get("lang", "en_US") |
||||
|
val = translate(self.env.cr, IR_TRANSLATION_NAME, "report", lang, src) or src |
||||
|
return val |
||||
|
|
||||
|
def _get_ws_params(self, workbook, data, amls): |
||||
|
|
||||
|
# XLSX Template |
||||
|
col_specs = { |
||||
|
"move": { |
||||
|
"header": {"value": self._("Entry")}, |
||||
|
"lines": {"value": self._render("line.move_id.name")}, |
||||
|
"width": 20, |
||||
|
}, |
||||
|
"name": { |
||||
|
"header": {"value": self._("Name")}, |
||||
|
"lines": {"value": self._render("line.name")}, |
||||
|
"width": 42, |
||||
|
}, |
||||
|
"ref": { |
||||
|
"header": {"value": self._("Reference")}, |
||||
|
"lines": {"value": self._render("line.ref")}, |
||||
|
"width": 42, |
||||
|
}, |
||||
|
"date": { |
||||
|
"header": {"value": self._("Effective Date")}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.date"), |
||||
|
"format": self.format_tcell_date_left, |
||||
|
}, |
||||
|
"width": 13, |
||||
|
}, |
||||
|
"partner": { |
||||
|
"header": {"value": self._("Partner")}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.partner_id and line.partner_id.name") |
||||
|
}, |
||||
|
"width": 36, |
||||
|
}, |
||||
|
"partner_ref": { |
||||
|
"header": {"value": self._("Partner Reference")}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.partner_id and line.partner_id.ref") |
||||
|
}, |
||||
|
"width": 36, |
||||
|
}, |
||||
|
"account": { |
||||
|
"header": {"value": self._("Account")}, |
||||
|
"lines": {"value": self._render("line.account_id.code")}, |
||||
|
"width": 12, |
||||
|
}, |
||||
|
"date_maturity": { |
||||
|
"header": {"value": self._("Maturity Date")}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.date_maturity"), |
||||
|
"format": self.format_tcell_date_left, |
||||
|
}, |
||||
|
"width": 13, |
||||
|
}, |
||||
|
"debit": { |
||||
|
"header": { |
||||
|
"value": self._("Debit"), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.debit"), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"totals": { |
||||
|
"type": "formula", |
||||
|
"value": self._render("debit_formula"), |
||||
|
"format": self.format_theader_yellow_amount_right, |
||||
|
}, |
||||
|
"width": 18, |
||||
|
}, |
||||
|
"credit": { |
||||
|
"header": { |
||||
|
"value": self._("Credit"), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.credit"), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"totals": { |
||||
|
"type": "formula", |
||||
|
"value": self._render("credit_formula"), |
||||
|
"format": self.format_theader_yellow_amount_right, |
||||
|
}, |
||||
|
"width": 18, |
||||
|
}, |
||||
|
"balance": { |
||||
|
"header": { |
||||
|
"value": self._("Balance"), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.balance"), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"totals": { |
||||
|
"type": "formula", |
||||
|
"value": self._render("bal_formula"), |
||||
|
"format": self.format_theader_yellow_amount_right, |
||||
|
}, |
||||
|
"width": 18, |
||||
|
}, |
||||
|
"full_reconcile": { |
||||
|
"header": { |
||||
|
"value": self._("Rec."), |
||||
|
"format": self.format_theader_yellow_center, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.full_reconcile_id " "and line.full_reconcile_id.name" |
||||
|
), |
||||
|
"format": self.format_tcell_center, |
||||
|
}, |
||||
|
"width": 12, |
||||
|
}, |
||||
|
"reconcile_amount": { |
||||
|
"header": {"value": self._("Reconcile Amount")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.full_reconcile_id and line.balance or " |
||||
|
"(sum(line.matched_credit_ids.mapped('amount')) - " |
||||
|
"sum(line.matched_debit_ids.mapped('amount')))" |
||||
|
), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"width": 12, |
||||
|
}, |
||||
|
"matched_debit_ids": { |
||||
|
"header": {"value": self._("Matched Debits")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.matched_debit_ids " |
||||
|
"and str([x.debit_move_id.id " |
||||
|
"for x in line.matched_debit_ids])" |
||||
|
) |
||||
|
}, |
||||
|
"width": 20, |
||||
|
}, |
||||
|
"matched_credit_ids": { |
||||
|
"header": {"value": self._("Matched Credits")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.matched_credit_ids " |
||||
|
"and str([x.credit_move_id.id " |
||||
|
"for x in line.matched_credit_ids])" |
||||
|
) |
||||
|
}, |
||||
|
"width": 20, |
||||
|
}, |
||||
|
"amount_currency": { |
||||
|
"header": { |
||||
|
"value": self._("Am. Currency"), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.amount_currency"), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"width": 18, |
||||
|
}, |
||||
|
"currency_name": { |
||||
|
"header": { |
||||
|
"value": self._("Curr."), |
||||
|
"format": self.format_theader_yellow_center, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.currency_id and line.currency_id.name"), |
||||
|
"format": self.format_tcell_center, |
||||
|
}, |
||||
|
"width": 6, |
||||
|
}, |
||||
|
"journal": { |
||||
|
"header": {"value": self._("Journal")}, |
||||
|
"lines": {"value": self._render("line.journal_id.code")}, |
||||
|
"width": 12, |
||||
|
}, |
||||
|
"company_currency": { |
||||
|
"header": { |
||||
|
"value": self._("Comp. Curr."), |
||||
|
"format": self.format_theader_yellow_center, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.company_id.currency_id.name"), |
||||
|
"format": self.format_tcell_center, |
||||
|
}, |
||||
|
"width": 10, |
||||
|
}, |
||||
|
"analytic_account": { |
||||
|
"header": {"value": self._("Analytic Account Reference")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.analytic_account_id " "and line.analytic_account_id.code" |
||||
|
) |
||||
|
}, |
||||
|
"width": 36, |
||||
|
}, |
||||
|
"analytic_account_name": { |
||||
|
"header": {"value": self._("Analytic Account")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.analytic_account_id " "and line.analytic_account_id.name" |
||||
|
) |
||||
|
}, |
||||
|
"width": 36, |
||||
|
}, |
||||
|
"product": { |
||||
|
"header": {"value": self._("Product")}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.product_id and line.product_id.name") |
||||
|
}, |
||||
|
"width": 36, |
||||
|
}, |
||||
|
"product_ref": { |
||||
|
"header": {"value": self._("Product Reference")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.product_id and line.product_id.default_code " "or ''" |
||||
|
) |
||||
|
}, |
||||
|
"width": 36, |
||||
|
}, |
||||
|
"product_uom": { |
||||
|
"header": {"value": self._("Unit of Measure")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.product_uom_id and line.product_uom_id.name" |
||||
|
) |
||||
|
}, |
||||
|
"width": 20, |
||||
|
}, |
||||
|
"quantity": { |
||||
|
"header": { |
||||
|
"value": self._("Qty"), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.quantity"), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"width": 8, |
||||
|
}, |
||||
|
"statement": { |
||||
|
"header": {"value": self._("Statement")}, |
||||
|
"lines": { |
||||
|
"value": self._render( |
||||
|
"line.statement_id and line.statement_id.name" |
||||
|
) |
||||
|
}, |
||||
|
"width": 20, |
||||
|
}, |
||||
|
"invoice": { |
||||
|
"header": {"value": self._("Invoice")}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.invoice_id and line.invoice_id.number") |
||||
|
}, |
||||
|
"width": 20, |
||||
|
}, |
||||
|
"amount_residual": { |
||||
|
"header": { |
||||
|
"value": self._("Residual Amount"), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.amount_residual"), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"width": 18, |
||||
|
}, |
||||
|
"amount_residual_currency": { |
||||
|
"header": { |
||||
|
"value": self._("Res. Am. in Curr."), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.amount_residual_currency"), |
||||
|
"format": self.format_tcell_amount_right, |
||||
|
}, |
||||
|
"width": 18, |
||||
|
}, |
||||
|
"narration": { |
||||
|
"header": {"value": self._("Notes")}, |
||||
|
"lines": {"value": self._render("line.move_id.narration or ''")}, |
||||
|
"width": 42, |
||||
|
}, |
||||
|
"blocked": { |
||||
|
"header": { |
||||
|
"value": self._("Lit."), |
||||
|
"format": self.format_theader_yellow_center, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.blocked and 'x' or ''"), |
||||
|
"format": self.format_tcell_center, |
||||
|
}, |
||||
|
"width": 4, |
||||
|
}, |
||||
|
"id": { |
||||
|
"header": { |
||||
|
"value": self._("Id"), |
||||
|
"format": self.format_theader_yellow_right, |
||||
|
}, |
||||
|
"lines": { |
||||
|
"value": self._render("line.id"), |
||||
|
"format": self.format_tcell_integer_right, |
||||
|
}, |
||||
|
"width": 12, |
||||
|
}, |
||||
|
} |
||||
|
col_specs.update(self.env["account.move.line"]._report_xlsx_template()) |
||||
|
wanted_list = self.env["account.move.line"]._report_xlsx_fields() |
||||
|
title = self._("Journal Items") |
||||
|
|
||||
|
return [ |
||||
|
{ |
||||
|
"ws_name": title, |
||||
|
"generate_ws_method": "_amls_export", |
||||
|
"title": title, |
||||
|
"wanted_list": wanted_list, |
||||
|
"col_specs": col_specs, |
||||
|
} |
||||
|
] |
||||
|
|
||||
|
def _amls_export(self, workbook, ws, ws_params, data, amls): |
||||
|
|
||||
|
ws.set_landscape() |
||||
|
ws.fit_to_pages(1, 0) |
||||
|
ws.set_header(self.xls_headers["standard"]) |
||||
|
ws.set_footer(self.xls_footers["standard"]) |
||||
|
|
||||
|
self._set_column_width(ws, ws_params) |
||||
|
|
||||
|
row_pos = 0 |
||||
|
row_pos = self._write_ws_title(ws, row_pos, ws_params) |
||||
|
|
||||
|
row_pos = self._write_line( |
||||
|
ws, |
||||
|
row_pos, |
||||
|
ws_params, |
||||
|
col_specs_section="header", |
||||
|
default_format=self.format_theader_yellow_left, |
||||
|
) |
||||
|
|
||||
|
ws.freeze_panes(row_pos, 0) |
||||
|
|
||||
|
wanted_list = ws_params["wanted_list"] |
||||
|
debit_pos = "debit" in wanted_list and wanted_list.index("debit") |
||||
|
credit_pos = "credit" in wanted_list and wanted_list.index("credit") |
||||
|
|
||||
|
for line in amls: |
||||
|
row_pos = self._write_line( |
||||
|
ws, |
||||
|
row_pos, |
||||
|
ws_params, |
||||
|
col_specs_section="lines", |
||||
|
render_space={"line": line}, |
||||
|
default_format=self.format_tcell_left, |
||||
|
) |
||||
|
|
||||
|
aml_cnt = len(amls) |
||||
|
debit_start = self._rowcol_to_cell(row_pos - aml_cnt, debit_pos) |
||||
|
debit_stop = self._rowcol_to_cell(row_pos - 1, debit_pos) |
||||
|
debit_formula = "SUM({}:{})".format(debit_start, debit_stop) |
||||
|
credit_start = self._rowcol_to_cell(row_pos - aml_cnt, credit_pos) |
||||
|
credit_stop = self._rowcol_to_cell(row_pos - 1, credit_pos) |
||||
|
credit_formula = "SUM({}:{})".format(credit_start, credit_stop) |
||||
|
debit_cell = self._rowcol_to_cell(row_pos, debit_pos) |
||||
|
credit_cell = self._rowcol_to_cell(row_pos, credit_pos) |
||||
|
bal_formula = debit_cell + "-" + credit_cell |
||||
|
row_pos = self._write_line( |
||||
|
ws, |
||||
|
row_pos, |
||||
|
ws_params, |
||||
|
col_specs_section="totals", |
||||
|
render_space={ |
||||
|
"debit_formula": debit_formula, |
||||
|
"credit_formula": credit_formula, |
||||
|
"bal_formula": bal_formula, |
||||
|
}, |
||||
|
default_format=self.format_theader_yellow_left, |
||||
|
) |
@ -0,0 +1,15 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<record id="action_account_move_line_xlsx" model="ir.actions.report"> |
||||
|
<field name="name">Export Selected Lines</field> |
||||
|
<field name="model">account.move.line</field> |
||||
|
<field name="type">ir.actions.report</field> |
||||
|
<field name="binding_type">action</field> |
||||
|
<field name="binding_model_id" ref="account.model_account_move_line" /> |
||||
|
<field |
||||
|
name="report_name" |
||||
|
>account_move_line_report_xls.account_move_line_xlsx</field> |
||||
|
<field name="report_file">account_move_line</field> |
||||
|
<field name="report_type">xlsx</field> |
||||
|
</record> |
||||
|
</odoo> |
After Width: 128 | Height: 128 | Size: 9.2 KiB |
79
account_move_line_report_xls/static/description/icon.svg
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1 @@ |
|||||
|
from . import test_aml_report_xlsx |
@ -0,0 +1,32 @@ |
|||||
|
# Copyright 2009-2020 Noviat. |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo.tests.common import TransactionCase |
||||
|
|
||||
|
|
||||
|
class TestAmlReportXlsx(TransactionCase): |
||||
|
def setUp(self): |
||||
|
super(TestAmlReportXlsx, self).setUp() |
||||
|
self.report = self.env.ref( |
||||
|
"account_move_line_report_xls.action_account_move_line_xlsx" |
||||
|
) |
||||
|
sale_journal = self.env["account.journal"].search([("type", "=", "sale")])[0] |
||||
|
ar = self.env["account.account"].search([("internal_type", "=", "receivable")])[ |
||||
|
0 |
||||
|
] |
||||
|
aml_vals = [ |
||||
|
{"name": "debit", "debit": 100, "account_id": ar.id}, |
||||
|
{"name": "credit", "credit": 100, "account_id": ar.id}, |
||||
|
] |
||||
|
am = self.env["account.move"].create( |
||||
|
{ |
||||
|
"name": "test", |
||||
|
"journal_id": sale_journal.id, |
||||
|
"line_ids": [(0, 0, x) for x in aml_vals], |
||||
|
} |
||||
|
) |
||||
|
self.amls = am.line_ids |
||||
|
|
||||
|
def test_aml_report_xlsx(self): |
||||
|
report_xls = self.report.render_xlsx(self.amls.ids, None) |
||||
|
self.assertEqual(report_xls[1], "xlsx") |
Write
Preview
Loading…
Cancel
Save
Reference in new issue