Luc De Meyer
5 years ago
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