parent
234ddac450
commit
0b3614bc38
|
@ -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>
|
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 45 KiB |
|
@ -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")
|
Loading…
Reference in New Issue