Browse Source

[MERGE] Raw Backporting From V7

6.0
Humberto Arocha 11 years ago
parent
commit
4f81ffa98c
  1. 36
      account_financial_report/__openerp__.py
  2. 55
      account_financial_report/i18n/es.po
  3. 687
      account_financial_report/i18n/es_MX.po
  4. 687
      account_financial_report/i18n/es_VE.po
  5. 4
      account_financial_report/model/__init__.py
  6. 98
      account_financial_report/model/account_financial_report.py
  7. 5
      account_financial_report/model/res_company.py
  8. 2
      account_financial_report/report/__init__.py
  9. 13
      account_financial_report/report/balance_full.rml
  10. 43
      account_financial_report/report/balance_full_13_cols.rml
  11. 10
      account_financial_report/report/balance_full_2_cols.rml
  12. 14
      account_financial_report/report/balance_full_4_cols.rml
  13. 16
      account_financial_report/report/balance_full_4_cols_analytic_ledger.rml
  14. 397
      account_financial_report/report/balance_full_4_cols_journal_ledger.rml
  15. 273
      account_financial_report/report/balance_full_4_cols_partner_balance.rml
  16. 10
      account_financial_report/report/balance_full_5_cols.rml
  17. 20
      account_financial_report/report/balance_full_qtr_cols.rml
  18. 608
      account_financial_report/report/parser.py
  19. 11
      account_financial_report/security/security.xml
  20. 111
      account_financial_report/view/account_financial_report_view.xml
  21. 24
      account_financial_report/view/report.xml
  22. 100
      account_financial_report/view/wizard.xml
  23. 2
      account_financial_report/wizard/__init__.py
  24. 74
      account_financial_report/wizard/wizard.py

36
account_financial_report/__openerp__.py

@ -1,9 +1,8 @@
# -*- encoding: utf-8 -*- # -*- encoding: utf-8 -*-
########################################################################### ###########################################################################
# Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha humberto@openerp.com.ve # Coded by: Humberto Arocha humberto@openerp.com.ve
# Angelica Barrios angelicaisabelb@gmail.com # Angelica Barrios angelicaisabelb@gmail.com
# Jordi Esteve <jesteve@zikzakmedia.com> # Jordi Esteve <jesteve@zikzakmedia.com>
@ -29,24 +28,35 @@
"version": "2.0", "version": "2.0",
"author": "Vauxoo", "author": "Vauxoo",
"website": "http://www.vauxoo.com", "website": "http://www.vauxoo.com",
"depends" : ["base","account"],
"category" : "Localisation/Accounting",
"depends": ["base",
"account"
],
"category": "Accounting",
"description": """ "description": """
This modules is a multiporpuse report generator.
Multiporpuse Accounting report generator.
=========================================
From the wizard you will be asked to provide information needed to create your report.
From the wizard you will be asked to provide information needed to create your
report.
Not only you can set the option within the wizard you can create your own Customized Account Financial Reports, in here, you will be able to create Templates for generating Two types of Reports: Balance Sheets and Income Statements, incluiding Analytic Ledgers. Besides, you can select within a set of choices to get better detailed report, be it that you ask it by one or several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD). Even you can get your reports in currencies other than the one set on your company.
Not only you can set the option within the wizard you can create your own
Customized Account Financial Reports, in here, you will be able to create
Templates for generating Two types of Reports: Balance Sheets and Income
Statements, incluiding Analytic Ledgers. Besides, you can select within a set
of choices to get better detailed report, be it that you ask it by one or
several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD).
Even you can get your reports in currencies other than the one set on your
company.
In the [ Account's Sign on Reports ] Section in the Company will be able to set the sign conventions for the Accounts, so that you will be able to see in positives Values in your reports for those accounts with Accreditable nature where appropriate""",
"init_xml" : [],
"demo_xml" : [],
"update_xml" : [
In the [ Account's Sign on Reports ] Section in the Company will be able to
set the sign conventions for the Accounts, so that you will be able to see in
positives Values in your reports for those accounts with Accreditable nature
where appropriate""",
"data": [
"security/security.xml", "security/security.xml",
"security/ir.model.access.csv"
"security/ir.model.access.csv",
"view/report.xml", "view/report.xml",
"view/wizard.xml", "view/wizard.xml",
"view/account_view.xml",
"view/company_view.xml", "view/company_view.xml",
"view/account_financial_report_view.xml", "view/account_financial_report_view.xml",
], ],

55
account_financial_report/i18n/es.po

@ -4,15 +4,15 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenERP Server 6.1\n"
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-11 17:38+0000\n"
"PO-Revision-Date: 2012-08-11 13:11-0400\n"
"Last-Translator: Humberto Arocha <hbto@vauxoo.com>\n"
"POT-Creation-Date: 2013-06-17 21:47+0000\n"
"PO-Revision-Date: 2013-06-17 21:47+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n" "Plural-Forms: \n"
#. module: account_financial_report #. module: account_financial_report
@ -64,7 +64,7 @@ msgid "Company"
msgstr "Compañía" msgstr "Compañía"
#. module: account_financial_report #. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:146
#: code:addons/account_financial_report/wizard/wizard.py:150
#, python-format #, python-format
msgid "Write a Description for your Summary Total" msgid "Write a Description for your Summary Total"
msgstr "Escriba una Descripción para el total del Sumario" msgstr "Escriba una Descripción para el total del Sumario"
@ -126,7 +126,7 @@ msgid "By Date"
msgstr "Por Fecha" msgstr "Por Fecha"
#. module: account_financial_report #. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:238
#: code:addons/account_financial_report/wizard/wizard.py:242
#, python-format #, python-format
msgid "La interseccion entre el periodo y fecha es vacio" msgid "La interseccion entre el periodo y fecha es vacio"
msgstr "La interseccion entre el periodo y fecha es vacio" msgstr "La interseccion entre el periodo y fecha es vacio"
@ -138,9 +138,9 @@ msgid "Company Info"
msgstr "Información de la Compañía" msgstr "Información de la Compañía"
#. module: account_financial_report #. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:345
#: code:addons/account_financial_report/wizard/wizard.py:185
#: code:addons/account_financial_report/report/parser.py:344
#: code:addons/account_financial_report/wizard/wizard.py:189 #: code:addons/account_financial_report/wizard/wizard.py:189
#: code:addons/account_financial_report/wizard/wizard.py:193
#, python-format #, python-format
msgid "UserError" msgid "UserError"
msgstr "UserError" msgstr "UserError"
@ -201,10 +201,9 @@ msgid "A debitable account is one which grows in the debit and diminishes in the
msgstr "Una cuenta debitable es una que crece por el débito y disminuye por el crédito." msgstr "Una cuenta debitable es una que crece por el débito y disminuye por el crédito."
#. module: account_financial_report #. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "4 QTR's | YTD"
msgstr "4 TRM's | YTD"
#: report:afr.5cols:0
msgid "(Expressed in"
msgstr "(Expresado en"
#. module: account_financial_report #. module: account_financial_report
#: report:afr.4cols:0 #: report:afr.4cols:0
@ -212,11 +211,6 @@ msgstr "4 TRM's | YTD"
msgid "INITIAL" msgid "INITIAL"
msgstr "INICIAL" msgstr "INICIAL"
#. module: account_financial_report
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "¡Error! No se pueden crear compañías recursivas."
#. module: account_financial_report #. module: account_financial_report
#: field:wizard.report,afr_id:0 #: field:wizard.report,afr_id:0
msgid "Custom Report" msgid "Custom Report"
@ -309,7 +303,7 @@ msgid "Creditable Accounts"
msgstr "Cuentas Acreditables" msgstr "Cuentas Acreditables"
#. module: account_financial_report #. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:345
#: code:addons/account_financial_report/report/parser.py:344
#, python-format #, python-format
msgid "The Selected Fiscal Year Does not have Regular Periods" msgid "The Selected Fiscal Year Does not have Regular Periods"
msgstr "El Ejercicio Fiscal Seleccionado no tiene Períodos Regulares" msgstr "El Ejercicio Fiscal Seleccionado no tiene Períodos Regulares"
@ -403,6 +397,12 @@ msgstr "REFERENCIA"
msgid "By Period" msgid "By Period"
msgstr "Por Período" msgstr "Por Período"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "4 QTR's | YTD"
msgstr "4 TRM's | YTD"
#. module: account_financial_report #. module: account_financial_report
#: model:ir.actions.act_window,name:account_financial_report.action_wizard_report #: model:ir.actions.act_window,name:account_financial_report.action_wizard_report
#: model:ir.ui.menu,name:account_financial_report.menu_wizard_report #: model:ir.ui.menu,name:account_financial_report.menu_wizard_report
@ -599,11 +599,6 @@ msgstr "Cuentas Acreditables"
msgid "afr" msgid "afr"
msgstr "afr" msgstr "afr"
#. module: account_financial_report
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr "¡El nombre de la compañía debe ser único!"
#. module: account_financial_report #. module: account_financial_report
#: field:afr,name:0 #: field:afr,name:0
msgid "Name" msgid "Name"
@ -631,8 +626,8 @@ msgid "All periods in the fiscal year if empty"
msgstr "Todos los períodos en el ejercicio fiscal si se deja vacío" msgstr "Todos los períodos en el ejercicio fiscal si se deja vacío"
#. module: account_financial_report #. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:175
#: code:addons/account_financial_report/wizard/wizard.py:238
#: code:addons/account_financial_report/wizard/wizard.py:179
#: code:addons/account_financial_report/wizard/wizard.py:242
#, python-format #, python-format
msgid "Error !" msgid "Error !"
msgstr "Error !" msgstr "Error !"
@ -690,3 +685,11 @@ msgstr "12 Meses | YTD"
msgid "Total" msgid "Total"
msgstr "Total" msgstr "Total"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:82
#, python-format
msgid "\n"
"VAT OF COMPANY NOT AVAILABLE"
msgstr "\n"
"VAT DE LA COMPAÑIA NO DISPONIBLE"

687
account_financial_report/i18n/es_MX.po

@ -0,0 +1,687 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_financial_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-06-17 21:47+0000\n"
"PO-Revision-Date: 2013-06-17 21:47+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_financial_report
#: view:res.company:0
msgid "Reverse sign on Reports for these accounts and children accounts that are within Debitable Accounts"
msgstr "Invierte el signo en los reportes para estas cuentas y las cuentas hijas que están dentro de las Cuentas Debitables"
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "No Filter"
msgstr "Sin Filtro"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "With Balance / Movements"
msgstr "Con Saldo / Movimientos"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.4_col_report
msgid "Balance 4 Columnas"
msgstr "Balance 4 Columnas"
#. module: account_financial_report
#: view:res.company:0
msgid "An accreditable account is one which grows in the credit and diminishes in the debit"
msgstr "Una cuenta acreditable es una que crece por el crédito y disminuye por el débito."
#. module: account_financial_report
#: report:afr.1cols:0
#: report:afr.4cols:0
#: report:afr.analytic.ledger:0
msgid "BALANCE"
msgstr "BALANCE"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:85
#: selection:afr,inf_type:0
#: selection:wizard.report,inf_type:0
#, python-format
msgid "Balance Sheet"
msgstr "Balance General"
#. module: account_financial_report
#: field:afr,company_id:0
#: field:wizard.report,company_id:0
msgid "Company"
msgstr "Compañía"
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:150
#, python-format
msgid "Write a Description for your Summary Total"
msgstr "Escriba una Descripción para el total del Sumario"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.5_col_report
msgid "Balance 5 Columnas"
msgstr "Balance 5 Columnas"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.qtr_col_report
msgid "Balance QTRs Columnas"
msgstr "Balance QTRs Columnas"
#. module: account_financial_report
#: report:afr.5cols:0
msgid "INIT. BAL."
msgstr "BAL. INIC."
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "By Date and Period"
msgstr "Por fecha y período"
#. module: account_financial_report
#: code:addons/account_financial_report/model/account_financial_report.py:77
#, python-format
msgid "Copy of %s"
msgstr "Copia de %s"
#. module: account_financial_report
#: field:afr,account_ids:0
#: field:wizard.report,account_list:0
msgid "Root accounts"
msgstr "Cuentas raíces"
#. module: account_financial_report
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
msgid "PERIOD"
msgstr "PERIODO"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "With Balance"
msgstr "Con Balance"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "12"
msgstr "12"
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "By Date"
msgstr "Por Fecha"
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:242
#, python-format
msgid "La interseccion entre el periodo y fecha es vacio"
msgstr "La interseccion entre el periodo y fecha es vacio"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Company Info"
msgstr "Información de la Compañía"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:344
#: code:addons/account_financial_report/wizard/wizard.py:189
#: code:addons/account_financial_report/wizard/wizard.py:193
#, python-format
msgid "UserError"
msgstr "UserError"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "JOURNAL ENTRY"
msgstr "ASIENTO DIARIO"
#. module: account_financial_report
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
msgid "CREDIT"
msgstr "CREDITO"
#. module: account_financial_report
#: view:wizard.report:0
msgid "_Cancel"
msgstr "_Cancelar"
#. module: account_financial_report
#: view:res.company:0
msgid "Account's Sign on Reports"
msgstr "Signo de las Cuentas en Reportes"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.2_col_report
msgid "Balance 2 Columnas"
msgstr "Balance 2 Columnas"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "Debit | Credit"
msgstr "Débito | Crédito"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Please check the [ Account's Sign on Reports ] Section in the Company"
msgstr "Por Favor, Verifique la Sección [ Signo de las Cuentas en Reportes ] en la Compañía"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.1cols:0
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.analytic.ledger:0
#: report:afr.qtrcols:0
msgid "CODE"
msgstr "CÓDIGO"
#. module: account_financial_report
#: view:res.company:0
msgid "A debitable account is one which grows in the debit and diminishes in the credit"
msgstr "Una cuenta debitable es una que crece por el débito y disminuye por el crédito."
#. module: account_financial_report
#: report:afr.5cols:0
msgid "(Expressed in"
msgstr "(Expresado en"
#. module: account_financial_report
#: report:afr.4cols:0
#: report:afr.analytic.ledger:0
msgid "INITIAL"
msgstr "INICIAL"
#. module: account_financial_report
#: field:wizard.report,afr_id:0
msgid "Custom Report"
msgstr "Reporte Personalizado"
#. module: account_financial_report
#: field:afr,date_from:0
#: field:wizard.report,date_from:0
msgid "Start date"
msgstr "Fecha Inicial"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Accounts to Include"
msgstr "Cuentas a incluir"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:100
#: code:addons/account_financial_report/report/parser.py:109
#, python-format
msgid " to "
msgstr " hasta "
#. module: account_financial_report
#: report:afr.13cols:0
msgid "02"
msgstr "02"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "03"
msgstr "03"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "01"
msgstr "01"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "06"
msgstr "06"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "07"
msgstr "07"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "04"
msgstr "04"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "05"
msgstr "05"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "08"
msgstr "08"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "09"
msgstr "09"
#. module: account_financial_report
#: view:afr:0
#: model:ir.ui.menu,name:account_financial_report.account_financial_report_menu
msgid "Account Financial Report (Templates)"
msgstr "Reportes Financieros (Plantillas)"
#. module: account_financial_report
#: field:afr,fiscalyear_id:0
#: field:wizard.report,fiscalyear:0
msgid "Fiscal year"
msgstr "Ejercicio Fiscal"
#. module: account_financial_report
#: model:ir.actions.act_window,help:account_financial_report.account_financial_report_action
msgid "Create your own Customized Account Financial Reports, in here, you will be able to create Templates for generating Two types of Reports: Balance Sheets and Income Statements, incluiding Analytic Ledgers. Besides, you can select within a set of choices to get better detailed report, be it that you ask it by one or several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD). Even you can get your reports in currencies other than the one set on your company."
msgstr "Cree sus propios Reportes Financieros Personalizados, aquí, Vd. podrá se capaz de Diseñar las Plantillas para la generación de Dos Tipos de Reportes: Balances Generales y Estados de Resultados, incluyendo Mayores Analíticos. Además, podrá seleccionar entre un conjunto de opciones para obtener un mejor reporte detallado, sea que lo pida para un período determinado, por meses (12 MESES + YTD) o por trimestres (4to's + YTD). Incluso puede obtener reportes en otras monedas distintas a la establecida en su compañia."
#. module: account_financial_report
#: field:res.company,credit_account_ids:0
msgid "Creditable Accounts"
msgstr "Cuentas Acreditables"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:344
#, python-format
msgid "The Selected Fiscal Year Does not have Regular Periods"
msgstr "El Ejercicio Fiscal Seleccionado no tiene Períodos Regulares"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.5cols:0
#: report:afr.qtrcols:0
msgid "YTD"
msgstr "YTD"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Periods to Include"
msgstr "Períodos a incluir"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "With movements"
msgstr "Con Movimientos"
#. module: account_financial_report
#: field:afr,currency_id:0
#: field:wizard.report,currency_id:0
msgid "Currency"
msgstr "Moneda"
#. module: account_financial_report
#: field:afr,display_account:0
#: field:wizard.report,display_account:0
msgid "Display accounts"
msgstr "Mostrar cuentas"
#. module: account_financial_report
#: field:afr,display_account_level:0
#: field:wizard.report,display_account_level:0
msgid "Up to level"
msgstr "Hasta nivel"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "PARTNER"
msgstr "PARTNER"
#. module: account_financial_report
#: help:afr,currency_id:0
#: help:wizard.report,currency_id:0
msgid "Currency at which this report will be expressed. If not selected will be used the one set in the company"
msgstr "Moneda con la cual este reporte será expresado. Si no se selecciona se usará la que está establecida en la compañía"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.1cols:0
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
#: report:afr.qtrcols:0
msgid "ACCOUNT"
msgstr "CUENTA"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "Pag.:"
msgstr "Pág.:"
#. module: account_financial_report
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
msgid "DEBIT"
msgstr "DÉBITO"
#. module: account_financial_report
#: field:afr,columns:0
#: field:wizard.report,columns:0
msgid "Columns"
msgstr "Columnas"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "REFERENCE"
msgstr "REFERENCIA"
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "By Period"
msgstr "Por Período"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "4 QTR's | YTD"
msgstr "4 TRM's | YTD"
#. module: account_financial_report
#: model:ir.actions.act_window,name:account_financial_report.action_wizard_report
#: model:ir.ui.menu,name:account_financial_report.menu_wizard_report
msgid "Account Financial Report (Multireports)"
msgstr "Reportes Financieros (Multireportes)"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Accounts Info"
msgstr "Información de Cuentas"
#. module: account_financial_report
#: help:afr,display_account_level:0
#: help:wizard.report,display_account_level:0
msgid "Display accounts up to this level (0 to show all)"
msgstr "Se mostrarán las cuentas hasta este nivel (Seleccionar 0 las mostrará todas)"
#. module: account_financial_report
#: model:ir.model,name:account_financial_report.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: account_financial_report
#: help:afr,fiscalyear_id:0
#: help:wizard.report,fiscalyear:0
msgid "Fiscal Year for this report"
msgstr "Ejercicio Fiscal para este reporte"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:87
#: selection:afr,inf_type:0
#: selection:wizard.report,inf_type:0
#, python-format
msgid "Income Statement"
msgstr "Estado de Resultados"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.1cols:0
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.qtrcols:0
msgid "/ Pág.:"
msgstr "/ Pág.:"
#. module: account_financial_report
#: model:ir.actions.act_window,name:account_financial_report.account_financial_report_action
#: model:res.groups,name:account_financial_report.group_afreport
#: view:wizard.report:0
msgid "Account Financial Report"
msgstr "Reportes Financieros"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "11"
msgstr "11"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "10"
msgstr "10"
#. module: account_financial_report
#: report:afr.5cols:0
msgid "Code"
msgstr "Código"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.1_col_report
msgid "Balance 1 Columna"
msgstr "Balance 1 Columna"
#. module: account_financial_report
#: view:wizard.report:0
msgid "Print"
msgstr "Imprimir"
#. module: account_financial_report
#: field:afr,filter:0
#: field:wizard.report,filter:0
msgid "Date/Period Filter"
msgstr "Filtro Fecha/Período"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "FiscalYear Info"
msgstr "Información del Ejercicio Fiscal"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "Initial | Debit | Credit | YTD"
msgstr "Inicial | Débito | Crédito | YTD"
#. module: account_financial_report
#: field:afr,period_ids:0
#: field:wizard.report,periods:0
msgid "Periods"
msgstr "Períodos"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q1"
msgstr "Q1"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q3"
msgstr "Q3"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q2"
msgstr "Q2"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q4"
msgstr "Q4"
#. module: account_financial_report
#: help:afr,analytic_ledger:0
#: help:wizard.report,analytic_ledger:0
msgid "Allows to Generate an Analytic Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"
msgstr "Permite generar un Mayor Analítico para las cuentas con movimientos. Disponible cuando se selecciona 'Balance General' e 'Inicial | Débito | Crédito | YTD'"
#. module: account_financial_report
#: help:wizard.report,afr_id:0
msgid "If you have already set a Custom Report, Select it Here."
msgstr "Si ya ha configurado un Reporte Personalizado, Selecciónelo Aquí."
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "Initial | Debit | Credit | Period | YTD"
msgstr "Inicial | Débito | Crédito | Período | YTD"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "End. Balance"
msgstr "Bal. Final"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "DATE"
msgstr "FECHA"
#. module: account_financial_report
#: view:res.company:0
msgid "Keep sign on Reports for these accounts and children accounts that are within Accreditable Accounts"
msgstr "Mantiene el signo en los reportes para estas cuentas y las cuentas hijas que están dentro de las Cuentas Acreditables"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:100
#: code:addons/account_financial_report/report/parser.py:109
#, python-format
msgid "From "
msgstr "Desde "
#. module: account_financial_report
#: field:afr,inf_type:0
#: field:wizard.report,inf_type:0
msgid "Type"
msgstr "Tipo"
#. module: account_financial_report
#: field:afr,date_to:0
#: field:wizard.report,date_to:0
msgid "End date"
msgstr "Fecha final"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Account's Sign Conventions"
msgstr "Convención de Signos de las Cuentas"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.13_col_report
msgid "Balance 13 Columnas"
msgstr "Balance 13 Columnas"
#. module: account_financial_report
#: view:res.company:0
msgid "Accreditable Accounts"
msgstr "Cuentas Acreditables"
#. module: account_financial_report
#: model:ir.model,name:account_financial_report.model_afr
msgid "afr"
msgstr "afr"
#. module: account_financial_report
#: field:afr,name:0
msgid "Name"
msgstr "Nombre"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:83
#: field:afr,analytic_ledger:0
#: model:ir.actions.report.xml,name:account_financial_report.analytic_ledger_report
#: field:wizard.report,analytic_ledger:0
#, python-format
msgid "Analytic Ledger"
msgstr "Mayor Analítico"
#. module: account_financial_report
#: view:res.company:0
#: field:res.company,debit_account_ids:0
msgid "Debitable Accounts"
msgstr "Cuentas Debitables"
#. module: account_financial_report
#: help:afr,period_ids:0
#: help:wizard.report,periods:0
msgid "All periods in the fiscal year if empty"
msgstr "Todos los períodos en el ejercicio fiscal si se deja vacío"
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:179
#: code:addons/account_financial_report/wizard/wizard.py:242
#, python-format
msgid "Error !"
msgstr "Error !"
#. module: account_financial_report
#: model:ir.model,name:account_financial_report.model_wizard_report
msgid "wizard.report"
msgstr "wizard.report"
#. module: account_financial_report
#: field:afr,lab_str:0
#: field:wizard.report,lab_str:0
msgid "Description"
msgstr "Descripción"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Report Info"
msgstr "Información del Reporte"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "All Accounts"
msgstr "Todas las Cuentas"
#. module: account_financial_report
#: field:afr,tot_check:0
#: field:wizard.report,tot_check:0
msgid "Summarize?"
msgstr "Totalizar?"
#. module: account_financial_report
#: help:afr,tot_check:0
#: help:wizard.report,tot_check:0
msgid "Checking will add a new line at the end of the Report which will Summarize Columns in Report"
msgstr "Seleccionarlo agregará una nueva línea al final del Reporte el cual Totalizará las Columnas en el Reporte"
#. module: account_financial_report
#: help:afr,lab_str:0
#: help:wizard.report,lab_str:0
msgid "Description for the Summary"
msgstr "Descripción para el Total"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "12 Months | YTD"
msgstr "12 Meses | YTD"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Total"
msgstr "Total"

687
account_financial_report/i18n/es_VE.po

@ -0,0 +1,687 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_financial_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-06-17 21:47+0000\n"
"PO-Revision-Date: 2013-06-17 21:47+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_financial_report
#: view:res.company:0
msgid "Reverse sign on Reports for these accounts and children accounts that are within Debitable Accounts"
msgstr "Invierte el signo en los reportes para estas cuentas y las cuentas hijas que están dentro de las Cuentas Debitables"
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "No Filter"
msgstr "Sin Filtro"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "With Balance / Movements"
msgstr "Con Saldo / Movimientos"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.4_col_report
msgid "Balance 4 Columnas"
msgstr "Balance 4 Columnas"
#. module: account_financial_report
#: view:res.company:0
msgid "An accreditable account is one which grows in the credit and diminishes in the debit"
msgstr "Una cuenta acreditable es una que crece por el crédito y disminuye por el débito."
#. module: account_financial_report
#: report:afr.1cols:0
#: report:afr.4cols:0
#: report:afr.analytic.ledger:0
msgid "BALANCE"
msgstr "BALANCE"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:85
#: selection:afr,inf_type:0
#: selection:wizard.report,inf_type:0
#, python-format
msgid "Balance Sheet"
msgstr "Balance General"
#. module: account_financial_report
#: field:afr,company_id:0
#: field:wizard.report,company_id:0
msgid "Company"
msgstr "Compañía"
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:150
#, python-format
msgid "Write a Description for your Summary Total"
msgstr "Escriba una Descripción para el total del Sumario"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.5_col_report
msgid "Balance 5 Columnas"
msgstr "Balance 5 Columnas"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.qtr_col_report
msgid "Balance QTRs Columnas"
msgstr "Balance QTRs Columnas"
#. module: account_financial_report
#: report:afr.5cols:0
msgid "INIT. BAL."
msgstr "BAL. INIC."
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "By Date and Period"
msgstr "Por fecha y período"
#. module: account_financial_report
#: code:addons/account_financial_report/model/account_financial_report.py:77
#, python-format
msgid "Copy of %s"
msgstr "Copia de %s"
#. module: account_financial_report
#: field:afr,account_ids:0
#: field:wizard.report,account_list:0
msgid "Root accounts"
msgstr "Cuentas raíces"
#. module: account_financial_report
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
msgid "PERIOD"
msgstr "PERIODO"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "With Balance"
msgstr "Con Balance"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "12"
msgstr "12"
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "By Date"
msgstr "Por Fecha"
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:242
#, python-format
msgid "La interseccion entre el periodo y fecha es vacio"
msgstr "La interseccion entre el periodo y fecha es vacio"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Company Info"
msgstr "Información de la Compañía"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:344
#: code:addons/account_financial_report/wizard/wizard.py:189
#: code:addons/account_financial_report/wizard/wizard.py:193
#, python-format
msgid "UserError"
msgstr "UserError"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "JOURNAL ENTRY"
msgstr "ASIENTO DIARIO"
#. module: account_financial_report
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
msgid "CREDIT"
msgstr "CREDITO"
#. module: account_financial_report
#: view:wizard.report:0
msgid "_Cancel"
msgstr "_Cancelar"
#. module: account_financial_report
#: view:res.company:0
msgid "Account's Sign on Reports"
msgstr "Signo de las Cuentas en Reportes"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.2_col_report
msgid "Balance 2 Columnas"
msgstr "Balance 2 Columnas"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "Debit | Credit"
msgstr "Débito | Crédito"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Please check the [ Account's Sign on Reports ] Section in the Company"
msgstr "Por Favor, Verifique la Sección [ Signo de las Cuentas en Reportes ] en la Compañía"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.1cols:0
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.analytic.ledger:0
#: report:afr.qtrcols:0
msgid "CODE"
msgstr "CÓDIGO"
#. module: account_financial_report
#: view:res.company:0
msgid "A debitable account is one which grows in the debit and diminishes in the credit"
msgstr "Una cuenta debitable es una que crece por el débito y disminuye por el crédito."
#. module: account_financial_report
#: report:afr.5cols:0
msgid "(Expressed in"
msgstr "(Expresado en"
#. module: account_financial_report
#: report:afr.4cols:0
#: report:afr.analytic.ledger:0
msgid "INITIAL"
msgstr "INICIAL"
#. module: account_financial_report
#: field:wizard.report,afr_id:0
msgid "Custom Report"
msgstr "Reporte Personalizado"
#. module: account_financial_report
#: field:afr,date_from:0
#: field:wizard.report,date_from:0
msgid "Start date"
msgstr "Fecha Inicial"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Accounts to Include"
msgstr "Cuentas a incluir"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:100
#: code:addons/account_financial_report/report/parser.py:109
#, python-format
msgid " to "
msgstr " hasta "
#. module: account_financial_report
#: report:afr.13cols:0
msgid "02"
msgstr "02"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "03"
msgstr "03"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "01"
msgstr "01"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "06"
msgstr "06"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "07"
msgstr "07"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "04"
msgstr "04"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "05"
msgstr "05"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "08"
msgstr "08"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "09"
msgstr "09"
#. module: account_financial_report
#: view:afr:0
#: model:ir.ui.menu,name:account_financial_report.account_financial_report_menu
msgid "Account Financial Report (Templates)"
msgstr "Reportes Financieros (Plantillas)"
#. module: account_financial_report
#: field:afr,fiscalyear_id:0
#: field:wizard.report,fiscalyear:0
msgid "Fiscal year"
msgstr "Ejercicio Fiscal"
#. module: account_financial_report
#: model:ir.actions.act_window,help:account_financial_report.account_financial_report_action
msgid "Create your own Customized Account Financial Reports, in here, you will be able to create Templates for generating Two types of Reports: Balance Sheets and Income Statements, incluiding Analytic Ledgers. Besides, you can select within a set of choices to get better detailed report, be it that you ask it by one or several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD). Even you can get your reports in currencies other than the one set on your company."
msgstr "Cree sus propios Reportes Financieros Personalizados, aquí, Vd. podrá se capaz de Diseñar las Plantillas para la generación de Dos Tipos de Reportes: Balances Generales y Estados de Resultados, incluyendo Mayores Analíticos. Además, podrá seleccionar entre un conjunto de opciones para obtener un mejor reporte detallado, sea que lo pida para un período determinado, por meses (12 MESES + YTD) o por trimestres (4to's + YTD). Incluso puede obtener reportes en otras monedas distintas a la establecida en su compañia."
#. module: account_financial_report
#: field:res.company,credit_account_ids:0
msgid "Creditable Accounts"
msgstr "Cuentas Acreditables"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:344
#, python-format
msgid "The Selected Fiscal Year Does not have Regular Periods"
msgstr "El Ejercicio Fiscal Seleccionado no tiene Períodos Regulares"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.5cols:0
#: report:afr.qtrcols:0
msgid "YTD"
msgstr "YTD"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Periods to Include"
msgstr "Períodos a incluir"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "With movements"
msgstr "Con Movimientos"
#. module: account_financial_report
#: field:afr,currency_id:0
#: field:wizard.report,currency_id:0
msgid "Currency"
msgstr "Moneda"
#. module: account_financial_report
#: field:afr,display_account:0
#: field:wizard.report,display_account:0
msgid "Display accounts"
msgstr "Mostrar cuentas"
#. module: account_financial_report
#: field:afr,display_account_level:0
#: field:wizard.report,display_account_level:0
msgid "Up to level"
msgstr "Hasta nivel"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "PARTNER"
msgstr "PARTNER"
#. module: account_financial_report
#: help:afr,currency_id:0
#: help:wizard.report,currency_id:0
msgid "Currency at which this report will be expressed. If not selected will be used the one set in the company"
msgstr "Moneda con la cual este reporte será expresado. Si no se selecciona se usará la que está establecida en la compañía"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.1cols:0
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
#: report:afr.qtrcols:0
msgid "ACCOUNT"
msgstr "CUENTA"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "Pag.:"
msgstr "Pág.:"
#. module: account_financial_report
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.analytic.ledger:0
msgid "DEBIT"
msgstr "DÉBITO"
#. module: account_financial_report
#: field:afr,columns:0
#: field:wizard.report,columns:0
msgid "Columns"
msgstr "Columnas"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "REFERENCE"
msgstr "REFERENCIA"
#. module: account_financial_report
#: selection:afr,filter:0
#: selection:wizard.report,filter:0
msgid "By Period"
msgstr "Por Período"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "4 QTR's | YTD"
msgstr "4 TRM's | YTD"
#. module: account_financial_report
#: model:ir.actions.act_window,name:account_financial_report.action_wizard_report
#: model:ir.ui.menu,name:account_financial_report.menu_wizard_report
msgid "Account Financial Report (Multireports)"
msgstr "Reportes Financieros (Multireportes)"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Accounts Info"
msgstr "Información de Cuentas"
#. module: account_financial_report
#: help:afr,display_account_level:0
#: help:wizard.report,display_account_level:0
msgid "Display accounts up to this level (0 to show all)"
msgstr "Se mostrarán las cuentas hasta este nivel (Seleccionar 0 las mostrará todas)"
#. module: account_financial_report
#: model:ir.model,name:account_financial_report.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: account_financial_report
#: help:afr,fiscalyear_id:0
#: help:wizard.report,fiscalyear:0
msgid "Fiscal Year for this report"
msgstr "Ejercicio Fiscal para este reporte"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:87
#: selection:afr,inf_type:0
#: selection:wizard.report,inf_type:0
#, python-format
msgid "Income Statement"
msgstr "Estado de Resultados"
#. module: account_financial_report
#: report:afr.13cols:0
#: report:afr.1cols:0
#: report:afr.2cols:0
#: report:afr.4cols:0
#: report:afr.5cols:0
#: report:afr.qtrcols:0
msgid "/ Pág.:"
msgstr "/ Pág.:"
#. module: account_financial_report
#: model:ir.actions.act_window,name:account_financial_report.account_financial_report_action
#: model:res.groups,name:account_financial_report.group_afreport
#: view:wizard.report:0
msgid "Account Financial Report"
msgstr "Reportes Financieros"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "11"
msgstr "11"
#. module: account_financial_report
#: report:afr.13cols:0
msgid "10"
msgstr "10"
#. module: account_financial_report
#: report:afr.5cols:0
msgid "Code"
msgstr "Código"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.1_col_report
msgid "Balance 1 Columna"
msgstr "Balance 1 Columna"
#. module: account_financial_report
#: view:wizard.report:0
msgid "Print"
msgstr "Imprimir"
#. module: account_financial_report
#: field:afr,filter:0
#: field:wizard.report,filter:0
msgid "Date/Period Filter"
msgstr "Filtro Fecha/Período"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "FiscalYear Info"
msgstr "Información del Ejercicio Fiscal"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "Initial | Debit | Credit | YTD"
msgstr "Inicial | Débito | Crédito | YTD"
#. module: account_financial_report
#: field:afr,period_ids:0
#: field:wizard.report,periods:0
msgid "Periods"
msgstr "Períodos"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q1"
msgstr "Q1"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q3"
msgstr "Q3"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q2"
msgstr "Q2"
#. module: account_financial_report
#: report:afr.qtrcols:0
msgid "Q4"
msgstr "Q4"
#. module: account_financial_report
#: help:afr,analytic_ledger:0
#: help:wizard.report,analytic_ledger:0
msgid "Allows to Generate an Analytic Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"
msgstr "Permite generar un Mayor Analítico para las cuentas con movimientos. Disponible cuando se selecciona 'Balance General' e 'Inicial | Débito | Crédito | YTD'"
#. module: account_financial_report
#: help:wizard.report,afr_id:0
msgid "If you have already set a Custom Report, Select it Here."
msgstr "Si ya ha configurado un Reporte Personalizado, Selecciónelo Aquí."
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "Initial | Debit | Credit | Period | YTD"
msgstr "Inicial | Débito | Crédito | Período | YTD"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "End. Balance"
msgstr "Bal. Final"
#. module: account_financial_report
#: report:afr.analytic.ledger:0
msgid "DATE"
msgstr "FECHA"
#. module: account_financial_report
#: view:res.company:0
msgid "Keep sign on Reports for these accounts and children accounts that are within Accreditable Accounts"
msgstr "Mantiene el signo en los reportes para estas cuentas y las cuentas hijas que están dentro de las Cuentas Acreditables"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:100
#: code:addons/account_financial_report/report/parser.py:109
#, python-format
msgid "From "
msgstr "Desde "
#. module: account_financial_report
#: field:afr,inf_type:0
#: field:wizard.report,inf_type:0
msgid "Type"
msgstr "Tipo"
#. module: account_financial_report
#: field:afr,date_to:0
#: field:wizard.report,date_to:0
msgid "End date"
msgstr "Fecha final"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Account's Sign Conventions"
msgstr "Convención de Signos de las Cuentas"
#. module: account_financial_report
#: model:ir.actions.report.xml,name:account_financial_report.13_col_report
msgid "Balance 13 Columnas"
msgstr "Balance 13 Columnas"
#. module: account_financial_report
#: view:res.company:0
msgid "Accreditable Accounts"
msgstr "Cuentas Acreditables"
#. module: account_financial_report
#: model:ir.model,name:account_financial_report.model_afr
msgid "afr"
msgstr "afr"
#. module: account_financial_report
#: field:afr,name:0
msgid "Name"
msgstr "Nombre"
#. module: account_financial_report
#: code:addons/account_financial_report/report/parser.py:83
#: field:afr,analytic_ledger:0
#: model:ir.actions.report.xml,name:account_financial_report.analytic_ledger_report
#: field:wizard.report,analytic_ledger:0
#, python-format
msgid "Analytic Ledger"
msgstr "Mayor Analítico"
#. module: account_financial_report
#: view:res.company:0
#: field:res.company,debit_account_ids:0
msgid "Debitable Accounts"
msgstr "Cuentas Debitables"
#. module: account_financial_report
#: help:afr,period_ids:0
#: help:wizard.report,periods:0
msgid "All periods in the fiscal year if empty"
msgstr "Todos los períodos en el ejercicio fiscal si se deja vacío"
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/wizard.py:179
#: code:addons/account_financial_report/wizard/wizard.py:242
#, python-format
msgid "Error !"
msgstr "Error !"
#. module: account_financial_report
#: model:ir.model,name:account_financial_report.model_wizard_report
msgid "wizard.report"
msgstr "wizard.report"
#. module: account_financial_report
#: field:afr,lab_str:0
#: field:wizard.report,lab_str:0
msgid "Description"
msgstr "Descripción"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Report Info"
msgstr "Información del Reporte"
#. module: account_financial_report
#: selection:afr,display_account:0
#: selection:wizard.report,display_account:0
msgid "All Accounts"
msgstr "Todas las Cuentas"
#. module: account_financial_report
#: field:afr,tot_check:0
#: field:wizard.report,tot_check:0
msgid "Summarize?"
msgstr "Totalizar?"
#. module: account_financial_report
#: help:afr,tot_check:0
#: help:wizard.report,tot_check:0
msgid "Checking will add a new line at the end of the Report which will Summarize Columns in Report"
msgstr "Seleccionarlo agregará una nueva línea al final del Reporte el cual Totalizará las Columnas en el Reporte"
#. module: account_financial_report
#: help:afr,lab_str:0
#: help:wizard.report,lab_str:0
msgid "Description for the Summary"
msgstr "Descripción para el Total"
#. module: account_financial_report
#: selection:afr,columns:0
#: selection:wizard.report,columns:0
msgid "12 Months | YTD"
msgstr "12 Meses | YTD"
#. module: account_financial_report
#: view:afr:0
#: view:wizard.report:0
msgid "Total"
msgstr "Total"

4
account_financial_report/model/__init__.py

@ -4,7 +4,7 @@
# Module Writen to OpenERP, Open Source Management Solution # Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha <hbto@vauxoo.com> # Coded by: Humberto Arocha <hbto@vauxoo.com>
# Planified by: Rafael Silva <rsilvam@vauxoo.com> # Planified by: Rafael Silva <rsilvam@vauxoo.com>
# Audited by: Nhomar Hernandez <nhomar@vauxoo.com> # Audited by: Nhomar Hernandez <nhomar@vauxoo.com>
@ -21,7 +21,7 @@
# #
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
################################################################################
##########################################################################
import account_financial_report import account_financial_report
import res_company import res_company

98
account_financial_report/model/account_financial_report.py

@ -3,7 +3,7 @@
# Module Writen to OpenERP, Open Source Management Solution # Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha humberto@openerp.com.ve # Coded by: Humberto Arocha humberto@openerp.com.ve
# Angelica Barrios angelicaisabelb@gmail.com # Angelica Barrios angelicaisabelb@gmail.com
# Jordi Esteve <jesteve@zikzakmedia.com> # Jordi Esteve <jesteve@zikzakmedia.com>
@ -31,28 +31,52 @@ import pooler
import time import time
from tools.translate import _ from tools.translate import _
class account_financial_report(osv.osv): class account_financial_report(osv.osv):
_name = "afr" _name = "afr"
_columns = { _columns = {
'name': fields.char('Name', size=128, required=True), 'name': fields.char('Name', size=128, required=True),
'company_id': fields.many2one('res.company', 'Company', required=True), 'company_id': fields.many2one('res.company', 'Company', required=True),
'currency_id': fields.many2one('res.currency', 'Currency', help="Currency at which this report will be expressed. If not selected will be used the one set in the company"),
'inf_type': fields.selection([('BS','Balance Sheet'),('IS','Income Statement')],'Type',required=True),
'columns': fields.selection([('one','End. Balance'),('two','Debit | Credit'), ('four','Initial | Debit | Credit | YTD'), ('five','Initial | Debit | Credit | Period | YTD'),('qtr',"4 QTR's | YTD"), ('thirteen','12 Months | YTD')],'Columns',required=True),
'display_account': fields.selection([('all','All Accounts'),('bal', 'With Balance'),('mov','With movements'),('bal_mov','With Balance / Movements')],'Display accounts'),
'display_account_level': fields.integer('Up to level',help='Display accounts up to this level (0 to show all)'),
'account_ids': fields.many2many ('account.account','afr_account_rel','afr_id','account_id','Root accounts',required=True),
'fiscalyear_id': fields.many2one('account.fiscalyear','Fiscal year',help='Fiscal Year for this report',required=True),
'period_ids': fields.many2many('account.period','afr_period_rel','afr_id','period_id','Periods',help='All periods in the fiscal year if empty'),
'analytic_ledger': fields.boolean('Analytic Ledger', help="Allows to Generate an Analytic Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"),
'tot_check': fields.boolean('Summarize?', help='Checking will add a new line at the end of the Report which will Summarize Columns in Report'),
'lab_str': fields.char('Description', help='Description for the Summary', size= 128),
'currency_id': fields.many2one(
'res.currency', 'Currency', help="Currency at which this report will be expressed. If not selected will be used the one set in the company"),
'inf_type': fields.selection(
[('BS', 'Balance Sheet'), ('IS', 'Income Statement')], 'Type', required=True),
'columns': fields.selection([('one', 'End. Balance'), ('two', 'Debit | Credit'), ('four', 'Initial | Debit | Credit | YTD'),
('five', 'Initial | Debit | Credit | Period | YTD'), ('qtr', "4 QTR's | YTD"), ('thirteen', '12 Months | YTD')], 'Columns', required=True),
'display_account': fields.selection([('all', 'All Accounts'), ('bal', 'With Balance'),
('mov', 'With movements'), ('bal_mov', 'With Balance / Movements')], 'Display accounts'),
'display_account_level': fields.integer(
'Up to level', help='Display accounts up to this level (0 to show all)'),
'account_ids': fields.many2many(
'account.account', 'afr_account_rel', 'afr_id', 'account_id', 'Root accounts', required=True),
'fiscalyear_id': fields.many2one(
'account.fiscalyear', 'Fiscal year', help='Fiscal Year for this report', required=True),
'period_ids': fields.many2many('account.period', 'afr_period_rel', 'afr_id',
'period_id', 'Periods', help='All periods in the fiscal year if empty'),
'analytic_ledger': fields.boolean(
'Analytic Ledger', help="Allows to Generate an Analytic Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"),
'journal_ledger': fields.boolean(
'journal Ledger', help="Allows to Generate an journal Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"),
'partner_balance': fields.boolean('Partner Balance', help="Allows to "
"Generate a Partner Balance for accounts with moves. Available when "
"Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"),
'tot_check': fields.boolean(
'Summarize?', help='Checking will add a new line at the end of the Report which will Summarize Columns in Report'),
'lab_str':
fields.char(
'Description',
help='Description for the Summary',
size=128),
'target_move': fields.selection([('posted', 'All Posted Entries'),
('all', 'All Entries'),
], 'Entries to Include', required=True,
help='Print All Accounting Entries or just Posted Accounting Entries'),
#~ Deprecated fields #~ Deprecated fields
'filter': fields.selection([('bydate','By Date'),('byperiod','By Period'),('all','By Date and Period'),('none','No Filter')],'Date/Period Filter'),
'filter': fields.selection([('bydate', 'By Date'), ('byperiod', 'By Period'),
('all', 'By Date and Period'), ('none', 'No Filter')], 'Date/Period Filter'),
'date_to': fields.date('End date'), 'date_to': fields.date('End date'),
'date_from': fields.date('Start date'), 'date_from': fields.date('Start date'),
} }
@ -60,14 +84,22 @@ class account_financial_report(osv.osv):
_defaults = { _defaults = {
'display_account_level': lambda *a: 0, 'display_account_level': lambda *a: 0,
'inf_type': lambda *a: 'BS', 'inf_type': lambda *a: 'BS',
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.invoice', context=c),
'fiscalyear_id': lambda self, cr, uid, c: self.pool.get('account.fiscalyear').find(cr, uid),
'company_id': lambda self, cr, uid, c:
self.pool.get(
'res.company')._company_default_get(
cr,
uid,
'account.invoice',
context=c),
'fiscalyear_id': lambda self, cr, uid, c:
self.pool.get('account.fiscalyear').find(cr, uid),
'display_account': lambda *a: 'bal_mov', 'display_account': lambda *a: 'bal_mov',
'columns': lambda *a: 'five', 'columns': lambda *a: 'five',
'date_from': lambda *a: time.strftime('%Y-%m-%d'), 'date_from': lambda *a: time.strftime('%Y-%m-%d'),
'date_to': lambda *a: time.strftime('%Y-%m-%d'), 'date_to': lambda *a: time.strftime('%Y-%m-%d'),
'filter': lambda *a: 'byperiod', 'filter': lambda *a: 'byperiod',
'target_move': 'posted',
} }
def copy(self, cr, uid, id, defaults, context=None): def copy(self, cr, uid, id, defaults, context=None):
@ -75,11 +107,21 @@ class account_financial_report(osv.osv):
context = {} context = {}
previous_name = self.browse(cr, uid, id, context=context).name previous_name = self.browse(cr, uid, id, context=context).name
new_name = _('Copy of %s') % previous_name new_name = _('Copy of %s') % previous_name
lst = self.search(cr, uid, [('name','like',new_name)], context=context)
lst = self.search(cr, uid, [(
'name', 'like', new_name)], context=context)
if lst: if lst:
new_name = '%s (%s)' % (new_name, len(lst) + 1) new_name = '%s (%s)' % (new_name, len(lst) + 1)
defaults['name'] = new_name defaults['name'] = new_name
return super(account_financial_report,self).copy(cr, uid, id, defaults, context=context)
return (
super(
account_financial_report,
self).copy(
cr,
uid,
id,
defaults,
context=context)
)
def onchange_inf_type(self, cr, uid, ids, inf_type, context=None): def onchange_inf_type(self, cr, uid, ids, inf_type, context=None):
if context is None: if context is None:
@ -91,7 +133,8 @@ class account_financial_report(osv.osv):
return res return res
def onchange_columns(self,cr,uid,ids,columns,fiscalyear_id,period_ids,context=None):
def onchange_columns(self, cr, uid, ids, columns,
fiscalyear_id, period_ids, context=None):
if context is None: if context is None:
context = {} context = {}
res = {'value': {}} res = {'value': {}}
@ -101,18 +144,21 @@ class account_financial_report(osv.osv):
if columns in ('qtr', 'thirteen'): if columns in ('qtr', 'thirteen'):
p_obj = self.pool.get("account.period") p_obj = self.pool.get("account.period")
period_ids = p_obj.search(cr,uid,[('fiscalyear_id','=',fiscalyear_id),('special','=',False)],context=context)
period_ids = p_obj.search(cr, uid, [('fiscalyear_id', '=', fiscalyear_id), (
'special', '=', False)], context=context)
res['value'].update({'period_ids': period_ids}) res['value'].update({'period_ids': period_ids})
else: else:
res['value'].update({'period_ids': []}) res['value'].update({'period_ids': []})
return res return res
def onchange_analytic_ledger(self,cr,uid,ids,company_id,analytic_ledger,context=None):
def onchange_analytic_ledger(
self, cr, uid, ids, company_id, analytic_ledger, context=None):
if context is None: if context is None:
context = {} context = {}
context['company_id'] = company_id context['company_id'] = company_id
res = {'value': {}} res = {'value': {}}
cur_id = self.pool.get('res.company').browse(cr,uid,company_id,context=context).currency_id.id
cur_id = self.pool.get('res.company').browse(
cr, uid, company_id, context=context).currency_id.id
res['value'].update({'currency_id': cur_id}) res['value'].update({'currency_id': cur_id})
return res return res
@ -125,8 +171,10 @@ class account_financial_report(osv.osv):
if not company_id: if not company_id:
return res return res
cur_id = self.pool.get('res.company').browse(cr,uid,company_id,context=context).currency_id.id
fy_id = self.pool.get('account.fiscalyear').find(cr, uid,context=context)
cur_id = self.pool.get('res.company').browse(
cr, uid, company_id, context=context).currency_id.id
fy_id = self.pool.get('account.fiscalyear').find(
cr, uid, context=context)
res['value'].update({'fiscalyear_id': fy_id}) res['value'].update({'fiscalyear_id': fy_id})
res['value'].update({'currency_id': cur_id}) res['value'].update({'currency_id': cur_id})
res['value'].update({'account_ids': []}) res['value'].update({'account_ids': []})

5
account_financial_report/model/res_company.py

@ -4,7 +4,7 @@
# Module Writen to OpenERP, Open Source Management Solution # Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha <hbto@vauxoo.com> # Coded by: Humberto Arocha <hbto@vauxoo.com>
# Planified by: Rafael Silva <rsilvam@vauxoo.com> # Planified by: Rafael Silva <rsilvam@vauxoo.com>
# Audited by: Nhomar Hernandez <nhomar@vauxoo.com> # Audited by: Nhomar Hernandez <nhomar@vauxoo.com>
@ -21,12 +21,13 @@
# #
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
################################################################################
##########################################################################
from osv import osv from osv import osv
from osv import fields from osv import fields
from tools.translate import _ from tools.translate import _
class res_company(osv.osv): class res_company(osv.osv):
_inherit = 'res.company' _inherit = 'res.company'
_columns = { _columns = {

2
account_financial_report/report/__init__.py

@ -3,7 +3,7 @@
# Module Writen to OpenERP, Open Source Management Solution # Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha humberto@openerp.com.ve # Coded by: Humberto Arocha humberto@openerp.com.ve
# Angelica Barrios angelicaisabelb@gmail.com # Angelica Barrios angelicaisabelb@gmail.com
# Jordi Esteve <jesteve@zikzakmedia.com> # Jordi Esteve <jesteve@zikzakmedia.com>

13
account_financial_report/report/balance_full.rml

@ -4,7 +4,7 @@
<pageTemplate id="first"> <pageTemplate id="first">
<frame id="first" x1="1cm" y1="1.0cm" width="19.0cm" height="23cm"/> <frame id="first" x1="1cm" y1="1.0cm" width="19.0cm" height="23cm"/>
<pageGraphics> <pageGraphics>
<setFont name="Helvetica" size="9"/>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image> <image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!-- <!--
@ -16,12 +16,12 @@
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME"> <td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font> <font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td> </para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expressed in %s)'%( exchange_name(data['form']))) or '']]</para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and ('%s'%( exchange_name(data['form']))) or '']])</para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
@ -29,7 +29,8 @@
</tr> </tr>
</blockTable> </blockTable>
</place> </place>
<drawRightString x="192mm" y="5mm">[[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/> </drawRightString>
<drawRightString x="207mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics> </pageGraphics>
</pageTemplate> </pageTemplate>
@ -88,7 +89,7 @@
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para>[[setLang(user.context_lang)]]</para>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,13.5cm,3.0cm" style="BODY" repeatRows="1"> <blockTable colWidths="2.5cm,13.5cm,3.0cm" style="BODY" repeatRows="1">
<tr noRowsplits="1"> <tr noRowsplits="1">
@ -121,7 +122,7 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
</tr> </tr>

43
account_financial_report/report/balance_full_13_cols.rml

@ -4,7 +4,7 @@
<pageTemplate id="first"> <pageTemplate id="first">
<frame id="first" x1="0.5cm" y1="1.0cm" width="41.0cm" height="23cm"/> <frame id="first" x1="0.5cm" y1="1.0cm" width="41.0cm" height="23cm"/>
<pageGraphics> <pageGraphics>
<setFont name="Helvetica" size="9"/>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image> <image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!-- <!--
@ -17,7 +17,7 @@
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME"> <td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font> <font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td> </para></td>
</tr> </tr>
<tr> <tr>
@ -26,7 +26,7 @@
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expressed in %s)'%( exchange_name(data['form']))) or '']]</para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and ('%s'%( exchange_name(data['form']))) or '']])</para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
@ -34,7 +34,7 @@
</tr> </tr>
</blockTable> </blockTable>
</place> </place>
<drawRightString x="192mm" y="5mm">[[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/> </drawRightString>
<drawRightString x="420mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics> </pageGraphics>
</pageTemplate> </pageTemplate>
@ -64,7 +64,12 @@
</blockTableStyle> </blockTableStyle>
<initialize> <initialize>
<paraStyle name="all" alignment="justify"/>
<paraStyle
name="all"
alignment="justify"
fontName="Helvetica"
fontSize="6.0"
/>
</initialize> </initialize>
<paraStyle <paraStyle
name="TITLE_LEFT_ALIGN" name="TITLE_LEFT_ALIGN"
@ -82,7 +87,7 @@
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para>[[setLang(user.context_lang)]]</para>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.0cm,6.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1"> <blockTable colWidths="2.0cm,6.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1">
<tr noRowsplits="1"> <tr noRowsplits="1">
<td> <td>
@ -149,79 +154,79 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal1'] and a['bal1'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal1'] and a['bal1'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal2'] and a['bal2'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal2'] and a['bal2'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal3'] and a['bal3'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal3'] and a['bal3'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal4'] and a['bal4'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal4'] and a['bal4'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal5'] and a['bal5'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal5'] and a['bal5'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal6'] and a['bal6'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal6'] and a['bal6'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal7'] and a['bal7'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal7'] and a['bal7'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal8'] and a['bal8'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal8'] and a['bal8'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal9'] and a['bal9'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal9'] and a['bal9'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal10'] and a['bal10'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal10'] and a['bal10'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal11'] and a['bal11'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal11'] and a['bal11'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal12'] and a['bal12'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal12'] and a['bal12'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal13'] and a['bal13'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal13'] and a['bal13'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
</tr> </tr>

10
account_financial_report/report/balance_full_2_cols.rml

@ -4,7 +4,7 @@
<pageTemplate id="first"> <pageTemplate id="first">
<frame id="first" x1="1cm" y1="1.0cm" width="19.0cm" height="23cm"/> <frame id="first" x1="1cm" y1="1.0cm" width="19.0cm" height="23cm"/>
<pageGraphics> <pageGraphics>
<setFont name="Helvetica" size="9"/>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image> <image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!-- <!--
@ -16,7 +16,7 @@
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME"> <td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font> <font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td> </para></td>
</tr> </tr>
<tr> <tr>
@ -25,7 +25,7 @@
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expressed in %s)'%( exchange_name(data['form']))) or '']]</para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and ('%s'%( exchange_name(data['form']))) or '']])</para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
@ -33,7 +33,7 @@
</tr> </tr>
</blockTable> </blockTable>
</place> </place>
<drawRightString x="192mm" y="5mm">[[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/> </drawRightString>
<drawRightString x="207mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics> </pageGraphics>
</pageTemplate> </pageTemplate>
@ -81,7 +81,7 @@
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para>[[setLang(user.context_lang)]]</para>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,9.5cm,3.5cm,3.5cm" style="BODY" repeatRows="1"> <blockTable colWidths="2.5cm,9.5cm,3.5cm,3.5cm" style="BODY" repeatRows="1">
<tr noRowsplits="1"> <tr noRowsplits="1">
<td> <td>

14
account_financial_report/report/balance_full_4_cols.rml

@ -4,7 +4,7 @@
<pageTemplate id="first"> <pageTemplate id="first">
<frame id="first" x1="0.5cm" y1="1.0cm" width="20.5cm" height="23cm"/> <frame id="first" x1="0.5cm" y1="1.0cm" width="20.5cm" height="23cm"/>
<pageGraphics> <pageGraphics>
<setFont name="Helvetica" size="9"/>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image> <image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!-- <!--
@ -17,7 +17,7 @@
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME"> <td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font> <font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td> </para></td>
</tr> </tr>
<tr> <tr>
@ -26,7 +26,7 @@
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expressed in %s)'%( exchange_name(data['form']))) or '']]</para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and ('%s'%( exchange_name(data['form']))) or '']])</para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
@ -34,7 +34,7 @@
</tr> </tr>
</blockTable> </blockTable>
</place> </place>
<drawRightString x="192mm" y="5mm">[[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/> </drawRightString>
<drawRightString x="207mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics> </pageGraphics>
</pageTemplate> </pageTemplate>
@ -82,7 +82,7 @@
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para>[[setLang(user.context_lang)]]</para>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,6.5cm,2.5cm,3.5cm,3.5cm,2.5cm" style="BODY" repeatRows="1"> <blockTable colWidths="2.5cm,6.5cm,2.5cm,3.5cm,3.5cm,2.5cm" style="BODY" repeatRows="1">
<tr noRowsplits="1"> <tr noRowsplits="1">
<td> <td>
@ -122,7 +122,7 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balanceinit'] and a['balanceinit'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['balanceinit'] and a['balanceinit'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
@ -140,7 +140,7 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
</tr> </tr>

16
account_financial_report/report/balance_full_4_cols_analytic_ledger.rml

@ -4,7 +4,7 @@
<pageTemplate id="first"> <pageTemplate id="first">
<frame id="first" x1="1.0cm" y1="1.0cm" width="26.0cm" height="16.65cm"/> <frame id="first" x1="1.0cm" y1="1.0cm" width="26.0cm" height="16.65cm"/>
<pageGraphics> <pageGraphics>
<setFont name="Helvetica" size="9"/>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="17.65cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image> <image x="1.0cm" y="17.65cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!-- <!--
@ -17,7 +17,7 @@
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME"> <td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font> <font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td> </para></td>
</tr> </tr>
<tr> <tr>
@ -26,7 +26,7 @@
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expressed in %s)'%( exchange_name(data['form']))) or '']]</para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and (' %s'%( exchange_name(data['form']))) or '']])</para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
@ -34,7 +34,7 @@
</tr> </tr>
</blockTable> </blockTable>
</place> </place>
<drawRightString x="270mm" y="5mm"> Pag.: <pageNumber/></drawRightString>
<drawRightString x="270mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics> </pageGraphics>
</pageTemplate> </pageTemplate>
@ -119,7 +119,7 @@
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para>[[setLang(user.context_lang)]]</para>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,13.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="0"> <blockTable colWidths="2.5cm,13.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="0">
<tr noRowsplits="0"> <tr noRowsplits="0">
@ -205,7 +205,7 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balanceinit'] and a['balanceinit'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['balanceinit'] and a['balanceinit'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
@ -223,7 +223,7 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
</tr> </tr>
@ -281,7 +281,7 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(m['balance'] and m['balance'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(m['balance'] and m['balance'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
</tr> </tr>

397
account_financial_report/report/balance_full_4_cols_journal_ledger.rml

@ -0,0 +1,397 @@
<?xml version="1.0"?>
<document filename="test.pdf">
<template pageSize="(27.94cm,21.59cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
<pageTemplate id="first">
<frame id="first" x1="1.0cm" y1="1.0cm" width="26.0cm" height="16.65cm"/>
<pageGraphics>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="17.65cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!--
<drawString x="1.0cm" y="24.5cm">[[company.logo and removeParentNode('para') or company.name]]</drawString>
-->
<place x="-3.5cm" y="16.15cm" width="19cm" height="5.0cm">
<blockTable colWidths="9.6cm,9.4cm" style="TITLE">
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
</para></td>
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[ get_informe_text(data['form']) ]]</para></td>
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and (' %s'%( exchange_name(data['form']))) or '']])</para></td>
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and get_month(data['form']) or '']]</para></td>
</tr>
</blockTable>
</place>
<drawRightString x="270mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="BODY_LINE">
<blockValign value="TOP"/>
<blockAlignment value="RIGHT"/>
<blockTopPadding length="1.0"/>
<blockBottomPadding length="1.0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1" thickness='0.25'/>
</blockTableStyle>
<blockTableStyle id="BODY_LINE_FILLED">
<blockBackground colorName="lightgrey" start="0,0" stop="-1,-1"/>
<blockValign value="TOP"/>
<blockAlignment value="RIGHT"/>
<blockTopPadding length="1.0"/>
<blockBottomPadding length="1.0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1" thickness='0.25'/>
</blockTableStyle>
<blockTableStyle id="TITLE">
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="BODY">
<blockValign value="TOP"/>
<blockAlignment value="RIGHT"/>
<blockTopPadding length="1.0"/>
<blockBottomPadding length="1.0"/>
<lineStyle kind="LINEBELOW" colorName="darkgrey" start="0,0" stop="-1,-1" thickness='0.25'/>
</blockTableStyle>
<blockTableStyle id="BODY_STRIKE">
<blockValign value="TOP"/>
<blockAlignment value="RIGHT"/>
<blockTopPadding length="1.0"/>
<blockBottomPadding length="1.0"/>
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,1" stop="-1,-1" thickness='0.5'/>
</blockTableStyle>
<blockTableStyle id="TOP_TABLE">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,-1" stop="0,-1" thickness='0.25'/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle
name="TITLE_LEFT_ALIGN_NEW"
fontName="Courier"
fontSize="7.0"
leading="10"
alignment="RIGHT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TITLES_NEW"
fontName="Courier"
fontSize="7.0"
leading="10"
alignment="LEFT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TITLES_NEW_P"
fontName="Helvetica-Bold"
fontSize="6.0"
leading="10"
alignment="LEFT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TITLES_NEW_RIGHT"
fontName="Courier"
fontSize="7.0"
leading="10"
alignment="RIGHT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle
name="TITLE_LEFT_ALIGN"
fontName="Helvetica-Bold"
fontSize="7.0"
leading="10"
alignment="RIGHT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TOP_TITLE" fontName="Helvetica-Bold" fontSize="7" leftIndent="0.0" alignment="LEFT"/>
<paraStyle
name="TITLES"
fontName="Helvetica-Bold"
fontSize="7.0"
leading="10"
alignment="LEFT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TITLE_CENTER" fontName="Helvetica-Bold" fontSize="7" leading="10" leftIndent="0.0" alignment="CENTER"/>
<paraStyle name="TITLE_CENTER_NAME" fontName="Helvetica-Bold" fontSize="12" leading="13" leftIndent="0.0" alignment="CENTER"/>
<paraStyle
name="TITLE"
alignment="CENTER"
fontName="Helvetica"
fontSize="18.0"
leading="20"
spaceBefore="-3.0"
textColor="black"/>
</stylesheet>
<images/>
<story>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,13.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="0">
<tr noRowsplits="0">
<td>
<para style="TITLE_LEFT_ALIGN">
<font>CODE</font>
</para>
</td>
<td>
<para style="TITLES">ACCOUNT</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">INITIAL</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">DEBIT</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">CREDIT</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">BALANCE</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="6.0cm,3.0cm,3.0cm,2.5cm,4.0cm,2.5cm,2.5cm,2.5cm" style="BODY_LINE" repeatRows="0">
<!--
[[ (a['type'] &lt;&gt; 'view') or removeParentNode('blockTable') ]]
-->
<tr noRowsplits="1">
<td>
<para style="TITLES_NEW">
<font>DATE</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>PERIOD</font>
</para>
</td>
<td>
<para style="TITLES_NEW">JOURNAL ENTRY</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
</tr>
</blockTable>
<section>
<para>[[ repeatIn([x for x in lines(data['form']) if x['type'] != 'view'], 'a') ]]</para>
<blockTable colWidths="2.5cm,13.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="0">
<tr>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<i>[[a['label']==True and a['code'] or '' ]]</i>
</para>
</td>
<td>
<para style="TITLES">
<font>[[ ((a['total'] and not a['label']) and setTag('para','para',{'alignment':"RIGHT"}) or (a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}))) or removeParentNode('font') ]]</font>
<font>[[ a['type']=='view' and a['name'].upper() or a['name'].title() ]]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balanceinit'] and a['balanceinit'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['debit'], digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['credit'], digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para>
</td>
</tr>
</blockTable>
<section>
<para>[[ repeatIn(a['journal'], 'j') ]]</para>
<blockTable colWidths="6.0cm,3.0cm,3.0cm,2.5cm,4.0cm,2.5cm,2.5cm,2.5cm" style="BODY_LINE" repeatRows="1">
<!--
[[ (a['type'] &lt;&gt; 'view') or removeParentNode('blockTable') ]]
-->
<tr>
<td>
<para style="TITLES_NEW_P">
<font> [[ formatLang( j['date'], date=True) ]]</font>
</para>
</td>
<td>
<para style="TITLES_NEW_P">
<font>[[ j['period'] ]]</font>
</para>
</td>
<td>
<para style="TITLES_NEW_P">
<font>[[ j['name'] ]] </font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font></font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font></font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
</para>
</td>
</tr>
</blockTable>
<section>
<para>[[ repeatIn(j.get('obj').line_id, 'k') ]]</para>
<blockTable colWidths="6.0cm,3.0cm,3.0cm,1.5cm,5.0cm,2.5cm,2.5cm,2.5cm" style="BODY_LINE_FILLED" repeatRows="1">
<tr>
<td>
<para style="TITLES_NEW">
<font> [[ k.account_id.code == a['code'] and k.name or removeParentNode('blockTable') ]]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.ref and k.ref or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.partner_id and k.partner_id.name or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.account_id and k.account_id.code or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.account_id and k.account_id.name or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW_RIGHT">
<font>[[ k.account_id.type&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ k.debit and formatLang(k.debit, digits=2, grouping=True) or '' ]] </font>
</para>
</td>
<td>
<para style="TITLES_NEW_RIGHT">
<font>[[ k.account_id.type&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ k.credit and formatLang(k.credit, digits=2, grouping=True) or '' ]] </font>
</para>
</td>
<td>
<para style="TITLES_NEW_RIGHT">
<font>[[ k.account_id.type&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ k.reconcile_id and k.reconcile_id.name or k.reconcile_partial_id and k.reconcile_partial_id.name or '']]</font>
</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="6.0cm,3.0cm,3.0cm,1.5cm,5.0cm,2.5cm,2.5cm,2.5cm" style="BODY_LINE" repeatRows="1">
<tr>
<td>
<para style="TITLES_NEW">
<font> [[ k.account_id.code != a['code'] and k.name or removeParentNode('blockTable') ]]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.ref and k.ref or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.partner_id and k.partner_id.name or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.account_id and k.account_id.code or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ k.account_id and k.account_id.name or '']]</font>
</para>
</td>
<td>
<para style="TITLES_NEW_RIGHT">
<font>[[ k.account_id.type&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ k.debit and formatLang(k.debit, digits=2, grouping=True) or '' ]] </font>
</para>
</td>
<td>
<para style="TITLES_NEW_RIGHT">
<font>[[ k.account_id.type&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ k.credit and formatLang(k.credit, digits=2, grouping=True) or '' ]] </font>
</para>
</td>
<td>
<para style="TITLES_NEW_RIGHT">
<font>[[ k.account_id.type&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ k.reconcile_id and k.reconcile_id.name or k.reconcile_partial_id and k.reconcile_partial_id.name or '']]</font>
</para>
</td>
</tr>
</blockTable>
</section>
<spacer length="1.5mm"/>
</section>
<spacer length="2.5mm"/>
</section>
</story>
</document>

273
account_financial_report/report/balance_full_4_cols_partner_balance.rml

@ -0,0 +1,273 @@
<?xml version="1.0"?>
<document filename="test.pdf">
<template pageSize="(27.94cm,21.59cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
<pageTemplate id="first">
<frame id="first" x1="1.0cm" y1="1.0cm" width="26.0cm" height="16.65cm"/>
<pageGraphics>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="17.65cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!--
<drawString x="1.0cm" y="24.5cm">[[company.logo and removeParentNode('para') or company.name]]</drawString>
-->
<place x="-3.5cm" y="16.15cm" width="19cm" height="5.0cm">
<blockTable colWidths="9.6cm,9.4cm" style="TITLE">
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td>
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[ get_informe_text(data['form']) ]]</para></td>
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and (' %s'%( exchange_name(data['form']))) or '']])</para></td>
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and get_month(data['form']) or '']]</para></td>
</tr>
</blockTable>
</place>
<drawRightString x="270mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="BODY_LINE">
<blockValign value="TOP"/>
<blockAlignment value="RIGHT"/>
<blockTopPadding length="1.0"/>
<blockBottomPadding length="1.0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1" thickness='0.25'/>
</blockTableStyle>
<blockTableStyle id="TITLE">
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="BODY">
<blockValign value="TOP"/>
<blockAlignment value="RIGHT"/>
<blockTopPadding length="1.0"/>
<blockBottomPadding length="1.0"/>
<lineStyle kind="LINEBELOW" colorName="darkgrey" start="0,0" stop="-1,-1" thickness='0.25'/>
</blockTableStyle>
<blockTableStyle id="BODY_STRIKE">
<blockValign value="TOP"/>
<blockAlignment value="RIGHT"/>
<blockTopPadding length="1.0"/>
<blockBottomPadding length="1.0"/>
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,1" stop="-1,-1" thickness='0.5'/>
</blockTableStyle>
<blockTableStyle id="TOP_TABLE">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,-1" stop="0,-1" thickness='0.25'/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle
name="TITLE_LEFT_ALIGN_NEW"
fontName="Courier"
fontSize="7.0"
leading="10"
alignment="RIGHT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TITLES_NEW"
fontName="Courier"
fontSize="7.0"
leading="10"
alignment="LEFT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle
name="TITLE_LEFT_ALIGN"
fontName="Helvetica-Bold"
fontSize="7.0"
leading="10"
alignment="RIGHT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TOP_TITLE" fontName="Helvetica-Bold" fontSize="7" leftIndent="0.0" alignment="LEFT"/>
<paraStyle
name="TITLES"
fontName="Helvetica-Bold"
fontSize="7.0"
leading="10"
alignment="LEFT"
spaceBefore="0.0"
spaceAfter="0.0"/>
<paraStyle name="TITLE_CENTER" fontName="Helvetica-Bold" fontSize="7" leading="10" leftIndent="0.0" alignment="CENTER"/>
<paraStyle name="TITLE_CENTER_NAME" fontName="Helvetica-Bold" fontSize="12" leading="13" leftIndent="0.0" alignment="CENTER"/>
<paraStyle
name="TITLE"
alignment="CENTER"
fontName="Helvetica"
fontSize="18.0"
leading="20"
spaceBefore="-3.0"
textColor="black"/>
</stylesheet>
<images/>
<story>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,13.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="0">
<tr noRowsplits="0">
<td>
<para style="TITLE_LEFT_ALIGN">
<font>CODE</font>
</para>
</td>
<td>
<para style="TITLES">ACCOUNT</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">INITIAL</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">DEBIT</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">CREDIT</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">BALANCE</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="2.25cm,13.75cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY_LINE" repeatRows="1">
<!--
[[ (a['type'] &lt;&gt; 'view') or removeParentNode('blockTable') ]]
-->
<tr noRowsplits="1">
<td>
<para style="TITLES_NEW">
<font></font>
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>PARTNER</font>
</para>
</td>
<td>
<para style="TITLES_NEW"></para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN"></para>
</td>
</tr>
</blockTable>
<section>
<para>[[ repeatIn([x for x in lines(data['form']) if x['type'] != 'view'], 'a') ]]</para>
<blockTable colWidths="2.5cm,13.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="0">
<tr>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<i>[[a['label']==True and a['code'] or '' ]]</i>
</para>
</td>
<td>
<para style="TITLES">
<font>[[ ((a['total'] and not a['label']) and setTag('para','para',{'alignment':"RIGHT"}) or (a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}))) or removeParentNode('font') ]]</font>
<font>[[ a['type']=='view' and a['name'].upper() or a['name'].title() ]]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balanceinit'] and a['balanceinit'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['debit'], digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['credit'], digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier-Bold"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['balance'] and a['balance'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para>
</td>
</tr>
</blockTable>
<section>
<para>[[ repeatIn(a['partner'], 'm') ]]</para>
<blockTable colWidths="2.25cm,13.75cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY_LINE" repeatRows="1">
<!--
[[ (a['type'] &lt;&gt; 'view') or removeParentNode('blockTable') ]]
-->
<tr>
<td>
<para style="TITLES_NEW">
</para>
</td>
<td>
<para style="TITLES_NEW">
<font>[[ m['partner_name'] ]]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(m['balanceinit'] and m['balanceinit'] * m.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(m['debit'], digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(m['credit'], digits=2, grouping=True) or '']]</font>
</para>
</td>
<td>
<para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(m['balance'] and m['balance'] * a.get('change_sign',1.0) or 0.0, digits=2, grouping=True) or '']]</font>
</para>
</td>
</tr>
</blockTable>
</section>
<spacer length="2.5mm"/>
</section>
</story>
</document>

10
account_financial_report/report/balance_full_5_cols.rml

@ -4,7 +4,7 @@
<pageTemplate id="first"> <pageTemplate id="first">
<frame id="first" x1="0.5cm" y1="1.0cm" width="20.5cm" height="23cm"/> <frame id="first" x1="0.5cm" y1="1.0cm" width="20.5cm" height="23cm"/>
<pageGraphics> <pageGraphics>
<setFont name="Helvetica" size="9"/>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image> <image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!-- <!--
@ -17,7 +17,7 @@
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME"> <td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font> <font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td> </para></td>
</tr> </tr>
<tr> <tr>
@ -26,7 +26,7 @@
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expressed in %s)'%( exchange_name(data['form']))) or '']]</para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and ('%s'%( exchange_name(data['form']))) or '']])</para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
@ -34,7 +34,7 @@
</tr> </tr>
</blockTable> </blockTable>
</place> </place>
<drawRightString x="192mm" y="5mm">[[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/> </drawRightString>
<drawRightString x="207mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics> </pageGraphics>
</pageTemplate> </pageTemplate>
@ -82,7 +82,7 @@
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para>[[setLang(user.context_lang)]]</para>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,6.0cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1"> <blockTable colWidths="2.5cm,6.0cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1">
<tr noRowsplits="1"> <tr noRowsplits="1">
<td> <td>

20
account_financial_report/report/balance_full_qtr_cols.rml

@ -4,7 +4,7 @@
<pageTemplate id="first"> <pageTemplate id="first">
<frame id="first" x1="0.5cm" y1="1.0cm" width="20.5cm" height="23cm"/> <frame id="first" x1="0.5cm" y1="1.0cm" width="20.5cm" height="23cm"/>
<pageGraphics> <pageGraphics>
<setFont name="Helvetica" size="9"/>
<setFont name="Helvetica-Oblique" size="6"/>
<image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image> <image x="1.0cm" y="24.0cm" width="5.0cm">[[company.logo and company.logo or removeParentNode('image')]]</image>
<!-- <!--
@ -17,7 +17,7 @@
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER_NAME"> <td><para style="TITLE_CENTER_NAME">
<font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font> <font>[[ (company.name and company.name or 'NOMBRE DE COMPANIA NO DISPONIBLE')]]</font>
<font>[[ company.partner_id.vat and ('- %s-%s-%s'%(company.partner_id.vat[2:3],company.partner_id.vat[3:11],company.partner_id.vat[11:12])) or '' ]]</font>
<font>[[ get_vat_by_country(data['form']) ]]</font>
</para></td> </para></td>
</tr> </tr>
<tr> <tr>
@ -26,7 +26,7 @@
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expressed in %s)'%( exchange_name(data['form']))) or '']]</para></td>
<td><para style="TITLE_CENTER">(Expressed in [[data['form'] and (' %s)'%( exchange_name(data['form']))) or '']])</para></td>
</tr> </tr>
<tr> <tr>
<td><para style="TOP_TITLE"></para></td> <td><para style="TOP_TITLE"></para></td>
@ -34,7 +34,7 @@
</tr> </tr>
</blockTable> </blockTable>
</place> </place>
<drawRightString x="192mm" y="5mm">[[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/> </drawRightString>
<drawRightString x="207mm" y="5mm">Printing Date: [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time=True) ]] [[ get_informe_text(data['form']) ]] / Pág.: <pageNumber/>-<pageCount/></drawRightString>
</pageGraphics> </pageGraphics>
</pageTemplate> </pageTemplate>
@ -82,7 +82,7 @@
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para>[[setLang(user.context_lang)]]</para>
<para>[[setLang(user.lang)]]</para>
<blockTable colWidths="2.5cm,6.0cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1"> <blockTable colWidths="2.5cm,6.0cm,2.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1">
<tr noRowsplits="1"> <tr noRowsplits="1">
<td> <td>
@ -125,31 +125,31 @@
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal1'] and a['bal1'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal1'] and (a['bal1'] * a.get('change_sign',1)) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal2'] and a['bal2'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal2'] and a['bal2'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal3'] and a['bal3'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal3'] and a['bal3'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal4'] and a['bal4'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal4'] and a['bal4'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
<td> <td>
<para style="TITLE_LEFT_ALIGN"> <para style="TITLE_LEFT_ALIGN">
<font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font> <font>[[ a['type']&lt;&gt;'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
<font>[[ (a['total']==True) and formatLang(a['bal5'] and a['bal5'] * a.get('change_sign') or 0.0, digits=2, grouping=True) or '']]</font>
<font>[[ (a['total']==True) and formatLang(a['bal5'] and a['bal5'] * a.get('change_sign',1) or 0.0, digits=2, grouping=True) or '']]</font>
</para> </para>
</td> </td>
</tr> </tr>

608
account_financial_report/report/parser.py

@ -3,7 +3,7 @@
# Module Writen to OpenERP, Open Source Management Solution # Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha humberto@openerp.com.ve # Coded by: Humberto Arocha humberto@openerp.com.ve
# Angelica Barrios angelicaisabelb@gmail.com # Angelica Barrios angelicaisabelb@gmail.com
# Jordi Esteve <jesteve@zikzakmedia.com> # Jordi Esteve <jesteve@zikzakmedia.com>
@ -35,6 +35,9 @@ from report import report_sxw
from tools import config from tools import config
from tools.translate import _ from tools.translate import _
from osv import osv from osv import osv
from openerp.tools.safe_eval import safe_eval as eval
class account_balance(report_sxw.rml_parse): class account_balance(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context): def __init__(self, cr, uid, name, context):
@ -55,9 +58,28 @@ class account_balance(report_sxw.rml_parse):
'get_informe_text': self.get_informe_text, 'get_informe_text': self.get_informe_text,
'get_month': self.get_month, 'get_month': self.get_month,
'exchange_name': self.exchange_name, 'exchange_name': self.exchange_name,
'get_vat_by_country': self.get_vat_by_country,
}) })
self.context = context self.context = context
def get_vat_by_country(self, form):
"""
Return the vat of the partner by country
"""
rc_obj = self.pool.get('res.company')
country_code = rc_obj.browse(self.cr, self.uid,
form['company_id'][0]).partner_id.country_id.code or ''
string_vat = rc_obj.browse(self.cr, self.uid,
form['company_id'][0]).partner_id.vat or ''
if string_vat:
if country_code == 'MX':
return '%s' % (string_vat[2:])
elif country_code == 'VE':
return '- %s-%s-%s' % (string_vat[2:3], string_vat[3:11], string_vat[11:12])
else:
return string_vat
else:
return _('\nVAT OF COMPANY NOT AVAILABLE')
def get_fiscalyear_text(self, form): def get_fiscalyear_text(self, form):
""" """
@ -66,17 +88,20 @@ class account_balance(report_sxw.rml_parse):
fiscalyear_obj = self.pool.get('account.fiscalyear') fiscalyear_obj = self.pool.get('account.fiscalyear')
fiscalyear = None fiscalyear = None
if form.get('fiscalyear'): if form.get('fiscalyear'):
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, form['fiscalyear'])
fiscalyear = fiscalyear_obj.browse(
self.cr, self.uid, form['fiscalyear'])
return fiscalyear.name or fiscalyear.code return fiscalyear.name or fiscalyear.code
else: else:
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, fiscalyear_obj.find(self.cr, self.uid))
fiscalyear = fiscalyear_obj.browse(
self.cr, self.uid, fiscalyear_obj.find(self.cr, self.uid))
return "%s*" % (fiscalyear.name or fiscalyear.code) return "%s*" % (fiscalyear.name or fiscalyear.code)
def get_informe_text(self, form): def get_informe_text(self, form):
""" """
Returns the header text used on the report. Returns the header text used on the report.
""" """
afr_id = form['afr_id'] and type(form['afr_id']) in (list,tuple) and form['afr_id'][0] or form['afr_id']
afr_id = form['afr_id'] and type(form['afr_id']) in (
list, tuple) and form['afr_id'][0] or form['afr_id']
if afr_id: if afr_id:
name = self.pool.get('afr').browse(self.cr, self.uid, afr_id).name name = self.pool.get('afr').browse(self.cr, self.uid, afr_id).name
elif form['analytic_ledger'] and form['columns'] == 'four' and form['inf_type'] == 'BS': elif form['analytic_ledger'] and form['columns'] == 'four' and form['inf_type'] == 'BS':
@ -93,7 +118,8 @@ class account_balance(report_sxw.rml_parse):
return day, year and month return day, year and month
''' '''
if form['filter'] in ['bydate', 'all']: if form['filter'] in ['bydate', 'all']:
months=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]
months = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]
mes = months[time.strptime(form['date_to'], "%Y-%m-%d")[1] - 1] mes = months[time.strptime(form['date_to'], "%Y-%m-%d")[1] - 1]
ano = time.strptime(form['date_to'], "%Y-%m-%d")[0] ano = time.strptime(form['date_to'], "%Y-%m-%d")[0]
dia = time.strptime(form['date_to'], "%Y-%m-%d")[2] dia = time.strptime(form['date_to'], "%Y-%m-%d")[2]
@ -114,18 +140,21 @@ class account_balance(report_sxw.rml_parse):
""" """
period_obj = self.pool.get('account.period') period_obj = self.pool.get('account.period')
periods_str = None periods_str = None
fiscalyear_id = form['fiscalyear'] or fiscalyear_obj.find(self.cr, self.uid)
period_ids = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear_id),('special','=',False)])
fiscalyear_id = form[
'fiscalyear'] or fiscalyear_obj.find(self.cr, self.uid)
period_ids = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear_id), ('special', '=', False)])
if form['filter'] in ['byperiod', 'all']: if form['filter'] in ['byperiod', 'all']:
period_ids = form['periods'] period_ids = form['periods']
periods_str = ', '.join([period.name or period.code for period in period_obj.browse(self.cr, self.uid, period_ids)])
periods_str = ', '.join([period.name or period.code for period in period_obj.browse(
self.cr, self.uid, period_ids)])
dates_str = None dates_str = None
if form['filter'] in ['bydate', 'all']: if form['filter'] in ['bydate', 'all']:
dates_str = self.formatLang(form['date_from'], date=True) + ' - ' + self.formatLang(form['date_to'], date=True) + ' '
dates_str = self.formatLang(form[
'date_from'], date=True) + ' - ' + self.formatLang(form['date_to'], date=True) + ' '
return {'periods': periods_str, 'date': dates_str} return {'periods': periods_str, 'date': dates_str}
def special_period(self, periods): def special_period(self, periods):
period_obj = self.pool.get('account.period') period_obj = self.pool.get('account.period')
period_brw = period_obj.browse(self.cr, self.uid, periods) period_brw = period_obj.browse(self.cr, self.uid, periods)
@ -135,11 +164,13 @@ class account_balance(report_sxw.rml_parse):
return False return False
def exchange_name(self, form): def exchange_name(self, form):
self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id'])
self.from_currency_id = self.get_company_currency(form['company_id'] and type(form[
'company_id']) in (list, tuple) and form['company_id'][0] or form['company_id'])
if not form['currency_id']: if not form['currency_id']:
self.to_currency_id = self.from_currency_id self.to_currency_id = self.from_currency_id
else: else:
self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id']
self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (
list, tuple) and form['currency_id'][0] or form['currency_id']
return self.pool.get('res.currency').browse(self.cr, self.uid, self.to_currency_id).name return self.pool.get('res.currency').browse(self.cr, self.uid, self.to_currency_id).name
def exchange(self, from_amount): def exchange(self, from_amount):
@ -159,6 +190,103 @@ class account_balance(report_sxw.rml_parse):
else: else:
return [brw.id for brw in rc_obj.browse(self.cr, self.uid, company_id).debit_account_ids] return [brw.id for brw in rc_obj.browse(self.cr, self.uid, company_id).debit_account_ids]
def _get_partner_balance(self, account, init_period, ctx=None):
rp_obj = self.pool.get('res.partner')
res = []
ctx = ctx or {}
if account['type'] in ('other', 'liquidity', 'receivable', 'payable'):
sql_query = """
SELECT
CASE
WHEN aml.partner_id IS NOT NULL
THEN (SELECT name FROM res_partner WHERE aml.partner_id = id)
ELSE 'UNKNOWN'
END AS partner_name,
CASE
WHEN aml.partner_id IS NOT NULL
THEN aml.partner_id
ELSE 0
END AS p_idx,
%s,
%s,
%s,
%s
FROM account_move_line AS aml
INNER JOIN account_account aa ON aa.id = aml.account_id
INNER JOIN account_move am ON am.id = aml.move_id
%s
GROUP BY p_idx, partner_name
"""
WHERE_POSTED = ''
if ctx.get('state', 'posted') == 'posted':
WHERE_POSTED = "AND am.state = 'posted'"
cur_periods = ', '.join([str(i) for i in ctx['periods']])
init_periods = ', '.join([str(i) for i in init_period])
WHERE = """
WHERE aml.period_id IN (%s)
AND aa.id = %s
AND aml.state <> 'draft'
""" % (init_periods, account['id'])
query_init = sql_query % ('SUM(aml.debit) AS init_dr',
'SUM(aml.credit) AS init_cr',
'0.0 AS bal_dr',
'0.0 AS bal_cr',
WHERE + WHERE_POSTED)
WHERE = """
WHERE aml.period_id IN (%s)
AND aa.id = %s
AND aml.state <> 'draft'
""" % (cur_periods, account['id'])
query_bal = sql_query % ('0.0 AS init_dr',
'0.0 AS init_cr',
'SUM(aml.debit) AS bal_dr',
'SUM(aml.credit) AS bal_cr',
WHERE + WHERE_POSTED)
query = '''
SELECT
partner_name,
p_idx,
SUM(init_dr)-SUM(init_cr) AS balanceinit,
SUM(bal_dr) AS debit,
SUM(bal_cr) AS credit,
SUM(init_dr) - SUM(init_cr) + SUM(bal_dr) - SUM(bal_cr) AS balance
FROM (
SELECT
*
FROM (%s) vinit
UNION ALL (%s)
) v
GROUP BY p_idx, partner_name
ORDER BY partner_name
''' % (query_init, query_bal)
self.cr.execute(query)
res_dict = self.cr.dictfetchall()
unknown = False
for det in res_dict:
i, d, c, b = det['balanceinit'], det[
'debit'], det['credit'], det['balance'],
if not any([i, d, c, b]):
continue
data = {
'partner_name': det['partner_name'],
'balanceinit': i,
'debit': d,
'credit': c,
'balance': b,
}
if not det['p_idx']:
unknown = data
continue
res.append(data)
unknown and res.append(unknown)
return res
def _get_analytic_ledger(self, account, ctx={}): def _get_analytic_ledger(self, account, ctx={}):
res = [] res = []
@ -168,8 +296,10 @@ class account_balance(report_sxw.rml_parse):
#~ FISCAL, SIN LOS PERIODOS ESPECIALES #~ FISCAL, SIN LOS PERIODOS ESPECIALES
periods = ', '.join([str(i) for i in ctx['periods']]) periods = ', '.join([str(i) for i in ctx['periods']])
#~ periods = str(tuple(ctx['periods'])) #~ periods = str(tuple(ctx['periods']))
where = """where aml.period_id in (%s) and aa.id = %s and aml.state <> 'draft'"""%(periods,account['id'])
where = """where aml.period_id in (%s) and aa.id = %s and aml.state <> 'draft'""" % (
periods, account['id'])
if ctx.get('state', 'posted') == 'posted':
where += "AND am.state = 'posted'"
sql_detalle = """select aml.id as id, aj.name as diario, aa.name as descripcion, sql_detalle = """select aml.id as id, aj.name as diario, aa.name as descripcion,
(select name from res_partner where aml.partner_id = id) as partner, (select name from res_partner where aml.partner_id = id) as partner,
aa.code as cuenta, aml.name as name, aa.code as cuenta, aml.name as name,
@ -207,6 +337,46 @@ class account_balance(report_sxw.rml_parse):
}) })
return res return res
def _get_journal_ledger(self, account, ctx={}):
res = []
am_obj = self.pool.get('account.move')
print 'AM OBJ ', am_obj
if account['type'] in ('other', 'liquidity', 'receivable', 'payable'):
#~ TODO: CUANDO EL PERIODO ESTE VACIO LLENARLO CON LOS PERIODOS DEL EJERCICIO
#~ FISCAL, SIN LOS PERIODOS ESPECIALES
periods = ', '.join([str(i) for i in ctx['periods']])
#~ periods = str(tuple(ctx['periods']))
where = """where aml.period_id in (%s) and aa.id = %s and aml.state <> 'draft'""" % (
periods, account['id'])
if ctx.get('state', 'posted') == 'posted':
where += "AND am.state = 'posted'"
sql_detalle = """SELECT
DISTINCT am.id as am_id,
aj.name as diario,
am.name as name,
am.date as date,
ap.name as periodo
from account_move_line aml
inner join account_journal aj on aj.id = aml.journal_id
inner join account_account aa on aa.id = aml.account_id
inner join account_period ap on ap.id = aml.period_id
inner join account_move am on am.id = aml.move_id """ + where +\
""" order by date, am.name"""
self.cr.execute(sql_detalle)
resultat = self.cr.dictfetchall()
for det in resultat:
res.append({
'am_id': det['am_id'],
'journal': det['diario'],
'name': det['name'],
'date': det['date'],
'period': det['periodo'],
'obj': am_obj.browse(self.cr, self.uid, det['am_id'])
})
print 'ACCOUNT NAME', am_obj.browse(self.cr, self.uid, det['am_id']).name
return res
def lines(self, form, level=0): def lines(self, form, level=0):
""" """
Returns all the data needed for the report lines Returns all the data needed for the report lines
@ -224,7 +394,8 @@ class account_balance(report_sxw.rml_parse):
if aa_brw.child_id and aa_brw.level < level and aa_brw.type != 'consolidation': if aa_brw.child_id and aa_brw.level < level and aa_brw.type != 'consolidation':
if not change_sign: if not change_sign:
ids2.append([aa_brw.id, True, False, aa_brw]) ids2.append([aa_brw.id, True, False, aa_brw])
ids2 += _get_children_and_consol(cr, uid, [x.id for x in aa_brw.child_id], level, context,change_sign=change_sign)
ids2 += _get_children_and_consol(cr, uid, [
x.id for x in aa_brw.child_id], level, context, change_sign=change_sign)
if change_sign: if change_sign:
ids2.append(aa_brw.id) ids2.append(aa_brw.id)
else: else:
@ -236,10 +407,9 @@ class account_balance(report_sxw.rml_parse):
ids2.append([aa_brw.id, True, True, aa_brw]) ids2.append([aa_brw.id, True, True, aa_brw])
return ids2 return ids2
#############################################################################
#######################################################################
# CONTEXT FOR ENDIND BALANCE # # CONTEXT FOR ENDIND BALANCE #
#############################################################################
#######################################################################
def _ctx_end(ctx): def _ctx_end(ctx):
ctx_end = ctx ctx_end = ctx
ctx_end['filter'] = form.get('filter', 'all') ctx_end['filter'] = form.get('filter', 'all')
@ -253,9 +423,11 @@ class account_balance(report_sxw.rml_parse):
if form['filter'] in ['byperiod', 'all']: if form['filter'] in ['byperiod', 'all']:
if special: if special:
ctx_end['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx_end.get('periods',False))])
ctx_end['periods'] = period_obj.search(self.cr, self.uid, [(
'id', 'in', form['periods'] or ctx_end.get('periods', False))])
else: else:
ctx_end['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx_end.get('periods',False)),('special','=',False)])
ctx_end['periods'] = period_obj.search(self.cr, self.uid, [('id', 'in', form[
'periods'] or ctx_end.get('periods', False)), ('special', '=', False)])
if form['filter'] in ['bydate', 'all', 'none']: if form['filter'] in ['bydate', 'all', 'none']:
ctx_end['date_from'] = form['date_from'] ctx_end['date_from'] = form['date_from']
@ -266,12 +438,14 @@ class account_balance(report_sxw.rml_parse):
def missing_period(ctx_init): def missing_period(ctx_init):
ctx_init['fiscalyear'] = fiscalyear_obj.search(self.cr, self.uid, [('date_stop', '<', fiscalyear.date_start)], order='date_stop') and \ ctx_init['fiscalyear'] = fiscalyear_obj.search(self.cr, self.uid, [('date_stop', '<', fiscalyear.date_start)], order='date_stop') and \
fiscalyear_obj.search(self.cr, self.uid, [('date_stop','<',fiscalyear.date_start)],order='date_stop')[-1] or []
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',ctx_init['fiscalyear']),('date_stop','<',fiscalyear.date_start)])
fiscalyear_obj.search(self.cr, self.uid, [(
'date_stop', '<', fiscalyear.date_start)], order='date_stop')[-1] or []
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', ctx_init['fiscalyear']), ('date_stop', '<', fiscalyear.date_start)])
return ctx_init return ctx_init
#############################################################################
#######################################################################
# CONTEXT FOR INITIAL BALANCE # # CONTEXT FOR INITIAL BALANCE #
#############################################################################
#######################################################################
def _ctx_init(ctx): def _ctx_init(ctx):
ctx_init = self.context.copy() ctx_init = self.context.copy()
@ -282,36 +456,48 @@ class account_balance(report_sxw.rml_parse):
ctx_init['periods'] = form['periods'] ctx_init['periods'] = form['periods']
if not ctx_init['periods']: if not ctx_init['periods']:
ctx_init = missing_period(ctx_init.copy()) ctx_init = missing_period(ctx_init.copy())
date_start = min([period.date_start for period in period_obj.browse(self.cr, self.uid, ctx_init['periods'])])
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('date_stop','<=',date_start)])
date_start = min([period.date_start for period in period_obj.browse(
self.cr, self.uid, ctx_init['periods'])])
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear.id), ('date_stop', '<=', date_start)])
elif form['filter'] in ['bydate']: elif form['filter'] in ['bydate']:
ctx_init['date_from'] = fiscalyear.date_start ctx_init['date_from'] = fiscalyear.date_start
ctx_init['date_to'] = form['date_from'] ctx_init['date_to'] = form['date_from']
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('date_stop','<=',ctx_init['date_to'])])
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear.id), ('date_stop', '<=', ctx_init['date_to'])])
elif form['filter'] == 'none': elif form['filter'] == 'none':
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',True)])
date_start = min([period.date_start for period in period_obj.browse(self.cr, self.uid, ctx_init['periods'])])
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('date_start','<=',date_start),('special','=',True)])
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear.id), ('special', '=', True)])
date_start = min([period.date_start for period in period_obj.browse(
self.cr, self.uid, ctx_init['periods'])])
ctx_init['periods'] = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear.id), ('date_start', '<=', date_start), ('special', '=', True)])
return ctx_init.copy() return ctx_init.copy()
def z(n): def z(n):
return abs(n) < 0.005 and 0.0 or n return abs(n) < 0.005 and 0.0 or n
self.context['state'] = form['target_move'] or 'posted'
self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id'])
self.from_currency_id = self.get_company_currency(form['company_id'] and type(form[
'company_id']) in (list, tuple) and form['company_id'][0] or form['company_id'])
if not form['currency_id']: if not form['currency_id']:
self.to_currency_id = self.from_currency_id self.to_currency_id = self.from_currency_id
else: else:
self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id']
self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (
list, tuple) and form['currency_id'][0] or form['currency_id']
if form.has_key('account_list') and form['account_list']:
if 'account_list' in form and form['account_list']:
account_ids = form['account_list'] account_ids = form['account_list']
account_list = form['account_list']
del form['account_list'] del form['account_list']
credit_account_ids = self.get_company_accounts(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id'],'credit')
credit_account_ids = self.get_company_accounts(form['company_id'] and type(form[
'company_id']) in (list, tuple) and form['company_id'][0] or form['company_id'], 'credit')
debit_account_ids = self.get_company_accounts(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id'],'debit')
debit_account_ids = self.get_company_accounts(form['company_id'] and type(form[
'company_id']) in (list, tuple) and form['company_id'][0] or form['company_id'], 'debit')
if form.get('fiscalyear'): if form.get('fiscalyear'):
if type(form.get('fiscalyear')) in (list, tuple): if type(form.get('fiscalyear')) in (list, tuple):
@ -323,15 +509,20 @@ class account_balance(report_sxw.rml_parse):
################################################################ ################################################################
# Get the accounts # # Get the accounts #
################################################################ ################################################################
all_account_ids = _get_children_and_consol(
self.cr, self.uid, account_ids, 100, self.context)
account_ids = _get_children_and_consol(self.cr, self.uid, account_ids, form['display_account_level'] and form['display_account_level'] or 100,self.context)
account_ids = _get_children_and_consol(self.cr, self.uid, account_ids, form[
'display_account_level'] and form['display_account_level'] or 100, self.context)
credit_account_ids = _get_children_and_consol(self.cr, self.uid, credit_account_ids, 100,self.context,change_sign=True)
credit_account_ids = _get_children_and_consol(
self.cr, self.uid, credit_account_ids, 100, self.context, change_sign=True)
debit_account_ids = _get_children_and_consol(self.cr, self.uid, debit_account_ids, 100,self.context,change_sign=True)
credit_account_ids = list(set(credit_account_ids) - set(debit_account_ids))
debit_account_ids = _get_children_and_consol(
self.cr, self.uid, debit_account_ids, 100, self.context, change_sign=True)
credit_account_ids = list(set(
credit_account_ids) - set(debit_account_ids))
# #
# Generate the report lines (checking each account) # Generate the report lines (checking each account)
# #
@ -339,12 +530,15 @@ class account_balance(report_sxw.rml_parse):
tot_check = False tot_check = False
if not form['periods']: if not form['periods']:
form['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)],order='date_start asc')
form['periods'] = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear.id), ('special', '=', False)], order='date_start asc')
if not form['periods']: if not form['periods']:
raise osv.except_osv(_('UserError'),_('The Selected Fiscal Year Does not have Regular Periods'))
raise osv.except_osv(_('UserError'), _(
'The Selected Fiscal Year Does not have Regular Periods'))
if form['columns'] == 'qtr': if form['columns'] == 'qtr':
period_ids = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)],order='date_start asc')
period_ids = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear.id), ('special', '=', False)], order='date_start asc')
a = 0 a = 0
l = [] l = []
p = [] p = []
@ -357,20 +551,15 @@ class account_balance(report_sxw.rml_parse):
p.append(l) p.append(l)
l = [] l = []
a = 0 a = 0
#~ period_ids = p
elif form['columns'] == 'thirteen':
period_ids = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)],order='date_start asc')
if form['columns'] == 'qtr':
tot_bal1 = 0.0 tot_bal1 = 0.0
tot_bal2 = 0.0 tot_bal2 = 0.0
tot_bal3 = 0.0 tot_bal3 = 0.0
tot_bal4 = 0.0 tot_bal4 = 0.0
tot_bal5 = 0.0 tot_bal5 = 0.0
elif form['columns'] == 'thirteen': elif form['columns'] == 'thirteen':
period_ids = period_obj.search(self.cr, self.uid, [(
'fiscalyear_id', '=', fiscalyear.id), ('special', '=', False)], order='date_start asc')
tot_bal1 = 0.0
tot_bal1 = 0.0 tot_bal1 = 0.0
tot_bal2 = 0.0 tot_bal2 = 0.0
tot_bal3 = 0.0 tot_bal3 = 0.0
@ -384,12 +573,8 @@ class account_balance(report_sxw.rml_parse):
tot_bal11 = 0.0 tot_bal11 = 0.0
tot_bal12 = 0.0 tot_bal12 = 0.0
tot_bal13 = 0.0 tot_bal13 = 0.0
else: else:
ctx_init = _ctx_init(self.context.copy())
ctx_end = _ctx_end(self.context.copy()) ctx_end = _ctx_end(self.context.copy())
tot_bin = 0.0 tot_bin = 0.0
tot_deb = 0.0 tot_deb = 0.0
tot_crd = 0.0 tot_crd = 0.0
@ -400,10 +585,171 @@ class account_balance(report_sxw.rml_parse):
result_acc = [] result_acc = []
tot = {} tot = {}
###############################################################
# Calculations of credit, debit and balance,
# without repeating operations.
###############################################################
account_black_ids = account_obj.search(self.cr, self.uid, (
[('id', 'in', [i[0] for i in all_account_ids]),
('type', 'not in',
('view', 'consolidation'))]))
account_not_black_ids = account_obj.search(self.cr, self.uid, ([('id', 'in', [
i[0] for i in all_account_ids]), ('type', '=', 'view')]))
acc_cons_ids = account_obj.search(self.cr, self.uid, ([('id', 'in', [
i[0] for i in all_account_ids]), ('type', 'in', ('consolidation',))]))
account_consol_ids = acc_cons_ids and account_obj._get_children_and_consol(
self.cr, self.uid, acc_cons_ids) or []
account_black_ids += account_obj.search(self.cr, self.uid, (
[('id', 'in', account_consol_ids),
('type', 'not in',
('view', 'consolidation'))]))
account_black_ids = list(set(account_black_ids))
c_account_not_black_ids = account_obj.search(self.cr, self.uid, ([
('id', 'in',
account_consol_ids),
('type', '=', 'view')]))
delete_cons = False
if c_account_not_black_ids:
delete_cons = set(account_not_black_ids) & set(
c_account_not_black_ids) and True or False
account_not_black_ids = list(
set(account_not_black_ids) - set(c_account_not_black_ids))
# This could be done quickly with a sql sentence
account_not_black = account_obj.browse(
self.cr, self.uid, account_not_black_ids)
account_not_black.sort(key=lambda x: x.level)
account_not_black.reverse()
account_not_black_ids = [i.id for i in account_not_black]
c_account_not_black = account_obj.browse(
self.cr, self.uid, c_account_not_black_ids)
c_account_not_black.sort(key=lambda x: x.level)
c_account_not_black.reverse()
c_account_not_black_ids = [i.id for i in c_account_not_black]
if delete_cons:
account_not_black_ids = c_account_not_black_ids + \
account_not_black_ids
account_not_black = c_account_not_black + account_not_black
else:
acc_cons_brw = account_obj.browse(
self.cr, self.uid, acc_cons_ids)
acc_cons_brw.sort(key=lambda x: x.level)
acc_cons_brw.reverse()
acc_cons_ids = [i.id for i in acc_cons_brw]
account_not_black_ids = c_account_not_black_ids + \
acc_cons_ids + account_not_black_ids
account_not_black = c_account_not_black + \
acc_cons_brw + account_not_black
all_account_period = {} # All accounts per period
# Iteration limit depending on the number of columns
if form['columns'] == 'thirteen':
limit = 13
elif form['columns'] == 'qtr':
limit = 5
else:
limit = 1
for p_act in range(limit):
if limit != 1:
if p_act == limit - 1:
form['periods'] = period_ids
else:
if form['columns'] == 'thirteen':
form['periods'] = [period_ids[p_act]]
elif form['columns'] == 'qtr':
form['periods'] = p[p_act]
if form['inf_type'] == 'IS':
ctx_to_use = _ctx_end(self.context.copy())
else:
ctx_i = _ctx_init(self.context.copy())
ctx_to_use = _ctx_end(self.context.copy())
account_black = account_obj.browse(
self.cr, self.uid, account_black_ids, ctx_to_use)
if form['inf_type'] == 'BS':
account_black_init = account_obj.browse(
self.cr, self.uid, account_black_ids, ctx_i)
#~ Black
dict_black = {}
for i in account_black:
d = i.debit
c = i.credit
dict_black[i.id] = {
'obj': i,
'debit': d,
'credit': c,
'balance': d - c
}
if form['inf_type'] == 'BS':
dict_black.get(i.id)['balanceinit'] = 0.0
# If the report is a balance sheet
# Balanceinit values are added to the dictionary
if form['inf_type'] == 'BS':
for i in account_black_init:
dict_black.get(i.id)['balanceinit'] = i.balance
#~ Not black
dict_not_black = {}
for i in account_not_black:
dict_not_black[i.id] = {
'obj': i, 'debit': 0.0, 'credit': 0.0, 'balance': 0.0}
if form['inf_type'] == 'BS':
dict_not_black.get(i.id)['balanceinit'] = 0.0
all_account = dict_black.copy(
) # It makes a copy because they modify
for acc_id in account_not_black_ids:
acc_childs = dict_not_black.get(acc_id).get('obj').type == 'view' \
and dict_not_black.get(acc_id).get('obj').child_id \
or dict_not_black.get(acc_id).get('obj').child_consol_ids
for child_id in acc_childs:
if child_id.type == 'consolidation' and delete_cons:
continue
dict_not_black.get(acc_id)['debit'] += all_account.get(
child_id.id).get('debit')
dict_not_black.get(acc_id)['credit'] += all_account.get(
child_id.id).get('credit')
dict_not_black.get(acc_id)['balance'] += all_account.get(
child_id.id).get('balance')
if form['inf_type'] == 'BS':
dict_not_black.get(acc_id)['balanceinit'] += all_account.get(
child_id.id).get('balanceinit')
all_account[acc_id] = dict_not_black[acc_id]
if p_act == limit - 1:
all_account_period['all'] = all_account
else:
if form['columns'] == 'thirteen':
all_account_period[p_act] = all_account
elif form['columns'] == 'qtr':
all_account_period[p_act] = all_account
###############################################################
# End of the calculations of credit, debit and balance
#
###############################################################
for aa_id in account_ids: for aa_id in account_ids:
id = aa_id[0] id = aa_id[0]
if aa_id[3].type == 'consolidation' and delete_cons:
continue
# #
# Check if we need to include this level # Check if we need to include this level
# #
@ -421,25 +767,19 @@ class account_balance(report_sxw.rml_parse):
} }
if form['columns'] == 'qtr': if form['columns'] == 'qtr':
pn = 1
for p_id in p:
form['periods'] = p_id
ctx_init = _ctx_init(self.context.copy())
aa_brw_init = account_obj.browse(self.cr, self.uid, id, ctx_init)
ctx_end = _ctx_end(self.context.copy())
aa_brw_end = account_obj.browse(self.cr, self.uid, id, ctx_end)
for pn in range(1, 5):
if form['inf_type'] == 'IS': if form['inf_type'] == 'IS':
d,c,b = map(z,[aa_brw_end.debit,aa_brw_end.credit,aa_brw_end.balance])
d, c, b = map(z, [
all_account_period.get(pn - 1).get(id).get('debit', 0.0), all_account_period.get(pn - 1).get(id).get('credit', 0.0), all_account_period.get(pn - 1).get(id).get('balance', 0.0)])
res.update({ res.update({
'dbr%s' % pn: self.exchange(d), 'dbr%s' % pn: self.exchange(d),
'cdr%s' % pn: self.exchange(c), 'cdr%s' % pn: self.exchange(c),
'bal%s' % pn: self.exchange(b), 'bal%s' % pn: self.exchange(b),
}) })
else: else:
i,d,c = map(z,[aa_brw_init.balance,aa_brw_end.debit,aa_brw_end.credit])
i, d, c = map(z, [
all_account_period.get(pn - 1).get(id).get('balanceinit', 0.0), all_account_period.get(pn - 1).get(id).get('debit', 0.0), all_account_period.get(pn - 1).get(id).get('credit', 0.0)])
b = z(i + d - c) b = z(i + d - c)
res.update({ res.update({
'dbr%s' % pn: self.exchange(d), 'dbr%s' % pn: self.exchange(d),
@ -447,25 +787,17 @@ class account_balance(report_sxw.rml_parse):
'bal%s' % pn: self.exchange(b), 'bal%s' % pn: self.exchange(b),
}) })
pn +=1
form['periods'] = period_ids
ctx_init = _ctx_init(self.context.copy())
aa_brw_init = account_obj.browse(self.cr, self.uid, id, ctx_init)
ctx_end = _ctx_end(self.context.copy())
aa_brw_end = account_obj.browse(self.cr, self.uid, id, ctx_end)
if form['inf_type'] == 'IS': if form['inf_type'] == 'IS':
d,c,b = map(z,[aa_brw_end.debit,aa_brw_end.credit,aa_brw_end.balance])
d, c, b = map(z, [
all_account_period.get('all').get(id).get('debit', 0.0), all_account_period.get('all').get(id).get('credit', 0.0), all_account_period.get('all').get(id).get('balance')])
res.update({ res.update({
'dbr5': self.exchange(d), 'dbr5': self.exchange(d),
'cdr5': self.exchange(c), 'cdr5': self.exchange(c),
'bal5': self.exchange(b), 'bal5': self.exchange(b),
}) })
else: else:
i,d,c = map(z,[aa_brw_init.balance,aa_brw_end.debit,aa_brw_end.credit])
i, d, c = map(z, [
all_account_period.get('all').get(id).get('balanceinit', 0.0), all_account_period.get('all').get(id).get('debit', 0.0), all_account_period.get('all').get(id).get('credit', 0.0)])
b = z(i + d - c) b = z(i + d - c)
res.update({ res.update({
'dbr5': self.exchange(d), 'dbr5': self.exchange(d),
@ -475,24 +807,19 @@ class account_balance(report_sxw.rml_parse):
elif form['columns'] == 'thirteen': elif form['columns'] == 'thirteen':
pn = 1 pn = 1
for p_id in period_ids:
form['periods'] = [p_id]
ctx_init = _ctx_init(self.context.copy())
aa_brw_init = account_obj.browse(self.cr, self.uid, id, ctx_init)
ctx_end = _ctx_end(self.context.copy())
aa_brw_end = account_obj.browse(self.cr, self.uid, id, ctx_end)
for p_num in range(12):
if form['inf_type'] == 'IS': if form['inf_type'] == 'IS':
d,c,b = map(z,[aa_brw_end.debit,aa_brw_end.credit,aa_brw_end.balance])
d, c, b = map(z, [
all_account_period.get(p_num).get(id).get('debit', 0.0), all_account_period.get(p_num).get(id).get('credit', 0.0), all_account_period.get(p_num).get(id).get('balance', 0.0)])
res.update({ res.update({
'dbr%s' % pn: self.exchange(d), 'dbr%s' % pn: self.exchange(d),
'cdr%s' % pn: self.exchange(c), 'cdr%s' % pn: self.exchange(c),
'bal%s' % pn: self.exchange(b), 'bal%s' % pn: self.exchange(b),
}) })
else: else:
i,d,c = map(z,[aa_brw_init.balance,aa_brw_end.debit,aa_brw_end.credit])
i, d, c = map(z, [
all_account_period.get(p_num).get(id).get('balanceinit', 0.0), all_account_period.get(p_num).get(id).get('debit', 0.0), all_account_period.get(p_num).get(id).get('credit', 0.0)])
b = z(i + d - c) b = z(i + d - c)
res.update({ res.update({
'dbr%s' % pn: self.exchange(d), 'dbr%s' % pn: self.exchange(d),
@ -502,23 +829,17 @@ class account_balance(report_sxw.rml_parse):
pn += 1 pn += 1
form['periods'] = period_ids
ctx_init = _ctx_init(self.context.copy())
aa_brw_init = account_obj.browse(self.cr, self.uid, id, ctx_init)
ctx_end = _ctx_end(self.context.copy())
aa_brw_end = account_obj.browse(self.cr, self.uid, id, ctx_end)
if form['inf_type'] == 'IS': if form['inf_type'] == 'IS':
d,c,b = map(z,[aa_brw_end.debit,aa_brw_end.credit,aa_brw_end.balance])
d, c, b = map(z, [
all_account_period.get('all').get(id).get('debit', 0.0), all_account_period.get('all').get(id).get('credit', 0.0), all_account_period.get('all').get(id).get('balance', 0.0)])
res.update({ res.update({
'dbr13': self.exchange(d), 'dbr13': self.exchange(d),
'cdr13': self.exchange(c), 'cdr13': self.exchange(c),
'bal13': self.exchange(b), 'bal13': self.exchange(b),
}) })
else: else:
i,d,c = map(z,[aa_brw_init.balance,aa_brw_end.debit,aa_brw_end.credit])
i, d, c = map(z, [
all_account_period.get('all').get(id).get('balanceinit', 0.0), all_account_period.get('all').get(id).get('debit', 0.0), all_account_period.get('all').get(id).get('credit', 0.0)])
b = z(i + d - c) b = z(i + d - c)
res.update({ res.update({
'dbr13': self.exchange(d), 'dbr13': self.exchange(d),
@ -527,11 +848,8 @@ class account_balance(report_sxw.rml_parse):
}) })
else: else:
aa_brw_init = account_obj.browse(self.cr, self.uid, id, ctx_init)
aa_brw_end = account_obj.browse(self.cr, self.uid, id, ctx_end)
i,d,c = map(z,[aa_brw_init.balance,aa_brw_end.debit,aa_brw_end.credit])
i, d, c = map(z, [
all_account_period.get('all').get(id).get('balanceinit', 0.0), all_account_period.get('all').get(id).get('debit', 0.0), all_account_period.get('all').get(id).get('credit', 0.0)])
b = z(i + d - c) b = z(i + d - c)
res.update({ res.update({
'balanceinit': self.exchange(i), 'balanceinit': self.exchange(i),
@ -559,24 +877,30 @@ class account_balance(report_sxw.rml_parse):
if form['display_account'] == 'mov' and aa_id[3].parent_id: if form['display_account'] == 'mov' and aa_id[3].parent_id:
# Include accounts with movements # Include accounts with movements
for x in range(pn - 1): for x in range(pn - 1):
to_test.append(res.get('dbr%s'%x,0.0) >= 0.005 and True or False)
to_test.append(res.get('cdr%s'%x,0.0) >= 0.005 and True or False)
to_test.append(res.get(
'dbr%s' % x, 0.0) >= 0.005 and True or False)
to_test.append(res.get(
'cdr%s' % x, 0.0) >= 0.005 and True or False)
if any(to_test): if any(to_test):
to_include = True to_include = True
elif form['display_account'] == 'bal' and aa_id[3].parent_id: elif form['display_account'] == 'bal' and aa_id[3].parent_id:
# Include accounts with balance # Include accounts with balance
for x in range(pn - 1): for x in range(pn - 1):
to_test.append(res.get('bal%s'%x,0.0) >= 0.005 and True or False)
to_test.append(res.get(
'bal%s' % x, 0.0) >= 0.005 and True or False)
if any(to_test): if any(to_test):
to_include = True to_include = True
elif form['display_account'] == 'bal_mov' and aa_id[3].parent_id: elif form['display_account'] == 'bal_mov' and aa_id[3].parent_id:
# Include accounts with balance or movements # Include accounts with balance or movements
for x in range(pn - 1): for x in range(pn - 1):
to_test.append(res.get('bal%s'%x,0.0) >= 0.005 and True or False)
to_test.append(res.get('dbr%s'%x,0.0) >= 0.005 and True or False)
to_test.append(res.get('cdr%s'%x,0.0) >= 0.005 and True or False)
to_test.append(res.get(
'bal%s' % x, 0.0) >= 0.005 and True or False)
to_test.append(res.get(
'dbr%s' % x, 0.0) >= 0.005 and True or False)
to_test.append(res.get(
'cdr%s' % x, 0.0) >= 0.005 and True or False)
if any(to_test): if any(to_test):
to_include = True to_include = True
else: else:
@ -604,20 +928,23 @@ class account_balance(report_sxw.rml_parse):
#~ ANALYTIC LEDGER #~ ANALYTIC LEDGER
if to_include and form['analytic_ledger'] and form['columns'] == 'four' and form['inf_type'] == 'BS' and res['type'] in ('other', 'liquidity', 'receivable', 'payable'): if to_include and form['analytic_ledger'] and form['columns'] == 'four' and form['inf_type'] == 'BS' and res['type'] in ('other', 'liquidity', 'receivable', 'payable'):
res['mayor'] = self._get_analytic_ledger(res, ctx=ctx_end) res['mayor'] = self._get_analytic_ledger(res, ctx=ctx_end)
elif to_include and form['journal_ledger'] and form['columns'] == 'four' and form['inf_type'] == 'BS' and res['type'] in ('other', 'liquidity', 'receivable', 'payable'):
res['journal'] = self._get_journal_ledger(res, ctx=ctx_end)
elif to_include and form['partner_balance'] and form['columns'] == 'four' and form['inf_type'] == 'BS' and res['type'] in ('other', 'liquidity', 'receivable', 'payable'):
res['partner'] = self._get_partner_balance(
res, ctx_i['periods'], ctx=ctx_end)
else: else:
res['mayor'] = [] res['mayor'] = []
if to_include: if to_include:
result_acc.append(res) result_acc.append(res)
# #
# Check whether we must sumarize this line in the report or not # Check whether we must sumarize this line in the report or not
# #
if form['tot_check'] and res['type'] == 'view' and res['level'] == 1 and (res['id'] not in tot):
if form['tot_check'] and (res['id'] in account_list) and (res['id'] not in tot):
if form['columns'] == 'qtr': if form['columns'] == 'qtr':
tot_check = True tot_check = True
#~ tot[res['id']] = True
tot[res['id']] = True
tot_bal1 += res.get('bal1', 0.0) tot_bal1 += res.get('bal1', 0.0)
tot_bal2 += res.get('bal2', 0.0) tot_bal2 += res.get('bal2', 0.0)
tot_bal3 += res.get('bal3', 0.0) tot_bal3 += res.get('bal3', 0.0)
@ -626,7 +953,7 @@ class account_balance(report_sxw.rml_parse):
elif form['columns'] == 'thirteen': elif form['columns'] == 'thirteen':
tot_check = True tot_check = True
#~ tot[res['id']] = True
tot[res['id']] = True
tot_bal1 += res.get('bal1', 0.0) tot_bal1 += res.get('bal1', 0.0)
tot_bal2 += res.get('bal2', 0.0) tot_bal2 += res.get('bal2', 0.0)
tot_bal3 += res.get('bal3', 0.0) tot_bal3 += res.get('bal3', 0.0)
@ -640,10 +967,9 @@ class account_balance(report_sxw.rml_parse):
tot_bal11 += res.get('bal11', 0.0) tot_bal11 += res.get('bal11', 0.0)
tot_bal12 += res.get('bal12', 0.0) tot_bal12 += res.get('bal12', 0.0)
tot_bal13 += res.get('bal13', 0.0) tot_bal13 += res.get('bal13', 0.0)
else: else:
tot_check = True tot_check = True
#~ tot[res['id']] = True
tot[res['id']] = True
tot_bin += res['balanceinit'] tot_bin += res['balanceinit']
tot_deb += res['debit'] tot_deb += res['debit']
tot_crd += res['credit'] tot_crd += res['credit']
@ -660,26 +986,26 @@ class account_balance(report_sxw.rml_parse):
} }
if form['columns'] == 'qtr': if form['columns'] == 'qtr':
res2.update(dict( res2.update(dict(
bal1 = tot_bal1,
bal2 = tot_bal2,
bal3 = tot_bal3,
bal4 = tot_bal4,
bal5 = tot_bal5,))
bal1=z(tot_bal1),
bal2=z(tot_bal2),
bal3=z(tot_bal3),
bal4=z(tot_bal4),
bal5=z(tot_bal5),))
elif form['columns'] == 'thirteen': elif form['columns'] == 'thirteen':
res2.update(dict( res2.update(dict(
bal1 = tot_bal1,
bal2 = tot_bal2,
bal3 = tot_bal3,
bal4 = tot_bal4,
bal5 = tot_bal5,
bal6 = tot_bal6,
bal7 = tot_bal7,
bal8 = tot_bal8,
bal9 = tot_bal9,
bal10 = tot_bal10,
bal11 = tot_bal11,
bal12 = tot_bal12,
bal13 = tot_bal13,))
bal1=z(tot_bal1),
bal2=z(tot_bal2),
bal3=z(tot_bal3),
bal4=z(tot_bal4),
bal5=z(tot_bal5),
bal6=z(tot_bal6),
bal7=z(tot_bal7),
bal8=z(tot_bal8),
bal9=z(tot_bal9),
bal10=z(tot_bal10),
bal11=z(tot_bal11),
bal12=z(tot_bal12),
bal13=z(tot_bal13),))
else: else:
res2.update({ res2.update({
@ -717,6 +1043,18 @@ report_sxw.report_sxw('report.afr.analytic.ledger',
parser=account_balance, parser=account_balance,
header=False) header=False)
report_sxw.report_sxw('report.afr.partner.balance',
'wizard.report',
'account_financial_report/report/balance_full_4_cols_partner_balance.rml',
parser=account_balance,
header=False)
report_sxw.report_sxw('report.afr.journal.ledger',
'wizard.report',
'account_financial_report/report/balance_full_4_cols_journal_ledger.rml',
parser=account_balance,
header=False)
report_sxw.report_sxw('report.afr.5cols', report_sxw.report_sxw('report.afr.5cols',
'wizard.report', 'wizard.report',
'account_financial_report/report/balance_full_5_cols.rml', 'account_financial_report/report/balance_full_5_cols.rml',

11
account_financial_report/security/security.xml

@ -5,5 +5,16 @@
<field name="name">Account Financial Report</field> <field name="name">Account Financial Report</field>
</record> </record>
<record id="ir_rule_same_company" model="ir.rule">
<field name="name">See AFR Reports of My Own Company</field>
<field model="ir.model" name="model_id" ref="model_afr"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
<field eval="False" name="global"/>
<field name="domain_force">[('company_id','=',user.company_id.id)]</field>
<field name="groups" eval="[(4,ref('account_financial_report.group_afreport'))]"/>
</record>
</data> </data>
</openerp> </openerp>

111
account_financial_report/view/account_financial_report_view.xml

@ -1,55 +1,47 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data> <data>
<record id="account_financial_report_view" model="ir.ui.view"> <record id="account_financial_report_view" model="ir.ui.view">
<field name="name">Account Financial Report (Template)</field> <field name="name">Account Financial Report (Template)</field>
<field name="model">afr</field> <field name="model">afr</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Account Financial Report (Templates)">
<group colspan="4">
<field name="name" colspan="4"/>
</group>
<group colspan="4">
<group colspan="2">
<separator string="Company Info" colspan="4"/>
<field name="company_id" on_change='onchange_company_id(company_id)' colspan="4"/>
<form string="Account Financial Report (Templates)" version="7.0">
<h2><label for="name"/></h2>
<field name="name" nolabel="1"/>
<group>
<group string="Company Info" >
<field name="company_id" on_change='onchange_company_id(company_id)' />
<field name="currency_id" <field name="currency_id"
domain="[('company_id','=',company_id)]" domain="[('company_id','=',company_id)]"
attrs="{'readonly':[('analytic_ledger','=',True)]}"
colspan="4"/>
attrs="{'readonly':[('analytic_ledger','=',True)]}" />
</group> </group>
<group colspan="2">
<separator string="Report Info" colspan="4"/>
<group string="Report Info" >
<field <field
name="inf_type" name="inf_type"
colspan="4"
on_change='onchange_inf_type(inf_type)'
/>
<field name="columns" on_change='onchange_columns(columns,fiscalyear_id,period_ids)' colspan="4"/>
<field name="analytic_ledger" colspan="4"
on_change='onchange_inf_type(inf_type)' />
<field name="columns" on_change='onchange_columns(columns,fiscalyear_id,period_ids)' />
<field name="analytic_ledger"
attrs="{'readonly':['|',('columns','!=','four'),('inf_type','!=','BS')],}" attrs="{'readonly':['|',('columns','!=','four'),('inf_type','!=','BS')],}"
on_change='onchange_analytic_ledger(company_id,analytic_ledger)'
/>
on_change='onchange_analytic_ledger(company_id,analytic_ledger)' />
<field name="journal_ledger"
attrs="{'readonly':['|',('columns','!=','four'),('inf_type','!=','BS')],}" />
</group> </group>
</group> </group>
<group colspan='4'>
<group colspan="2">
<separator string="Accounts Info" colspan="4"/>
<field name="display_account" required="True" colspan="4"/>
<field name="display_account_level" required="True" colspan="4"/>
<group>
<group string="Accounts Info" >
<field name="display_account" required="True" />
<field name="display_account_level" required="True" />
<field name="target_move"/>
</group> </group>
<group colspan="2">
<separator string="FiscalYear Info" colspan="4"/>
<field name="fiscalyear_id" on_change='onchange_columns(columns,fiscalyear_id,period_ids)' domain="[('company_id','=',company_id)]"/>
<newline/>
<group string="FiscalYear Info" >
<field name="fiscalyear_id" on_change='onchange_columns(columns,fiscalyear_id,period_ids)'
domain="[('company_id','=',company_id)]"/>
</group> </group>
</group> </group>
<group colspan='4'>
<group colspan="1">
<separator string="Accounts to Include" colspan="4"/>
<field name="account_ids" nolabel="1" colspan="4" domain="[('company_id','=',company_id)]">
<group>
<group string="Accounts to Include">
<field name="account_ids" nolabel="1" domain="[('company_id','=',company_id)]">
<tree> <tree>
<field name='code'/> <field name='code'/>
<field name='name'/> <field name='name'/>
@ -58,14 +50,11 @@
</tree> </tree>
</field> </field>
</group> </group>
<group colspan="1">
<separator string="Periods to Include" colspan="4"/>
<group string="Periods to Include">
<field name="period_ids" <field name="period_ids"
colspan="4" nolabel="1"
nolabel="1"
domain="[('fiscalyear_id','=',fiscalyear_id),('special','=',False),('company_id','=',company_id)]" domain="[('fiscalyear_id','=',fiscalyear_id),('special','=',False),('company_id','=',company_id)]"
attrs="{'readonly':[('columns','in',('qtr','thirteen'))],}"
>
attrs="{'readonly':[('columns','in',('qtr','thirteen'))],}" >
<tree> <tree>
<field name='code'/> <field name='code'/>
<field name='name'/> <field name='name'/>
@ -74,37 +63,18 @@
</field> </field>
</group> </group>
</group> </group>
<group colspan='4'>
<separator string="Account's Sign Conventions" colspan="4"/>
<group string="Account's Sign Conventions">
<label string="Please check the [ Account's Sign on Reports ] Section in the Company"/> <label string="Please check the [ Account's Sign on Reports ] Section in the Company"/>
</group> </group>
<group colspan='4' col='4'>
<group colspan="2">
<separator string="Total" colspan="4"/>
<field name="tot_check" colspan="4"/>
<field name="lab_str" colspan="4" attrs="{'required':[('tot_check','=',True)], 'readonly':[('tot_check','=',False)],}" />
<group>
<group string="Total">
<field name="tot_check"/>
<field name="lab_str" attrs="{'required':[('tot_check','=',True)], 'readonly':[('tot_check','=',False)],}" />
</group> </group>
<group colspan="2">
<separator string="" colspan="4"/>
<!--
<button
name="print_report"
string="Print"
type="object"
icon='gtk-print'/>
<button
type='special'
special='cancel'
string='_Cancel'
icon='gtk-cancel'
/>
-->
<group string=" " >
</group> </group>
</group> </group>
</form> </form>
</field> </field>
</record> </record>
@ -120,20 +90,13 @@
<field name="inf_type"/> <field name="inf_type"/>
<field name="columns"/> <field name="columns"/>
<field name="display_account"/> <field name="display_account"/>
<field name="display_account_level" required="True" colspan="4"/>
<field name="display_account_level" required="True" />
<field name="fiscalyear_id"/> <field name="fiscalyear_id"/>
<field name="tot_check" colspan="4"/>
<!--
<button name="print_report" string="Print" type="object"/>
-->
<field name="tot_check" />
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="account_financial_report_action"> <record model="ir.actions.act_window" id="account_financial_report_action">
<field name="name">Account Financial Report</field> <field name="name">Account Financial Report</field>
<field name="res_model">afr</field> <field name="res_model">afr</field>
@ -143,7 +106,6 @@
<field name="help">Create your own Customized Account Financial Reports, in here, you will be able to create Templates for generating Two types of Reports: Balance Sheets and Income Statements, incluiding Analytic Ledgers. Besides, you can select within a set of choices to get better detailed report, be it that you ask it by one or several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD). Even you can get your reports in currencies other than the one set on your company.</field> <field name="help">Create your own Customized Account Financial Reports, in here, you will be able to create Templates for generating Two types of Reports: Balance Sheets and Income Statements, incluiding Analytic Ledgers. Besides, you can select within a set of choices to get better detailed report, be it that you ask it by one or several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD). Even you can get your reports in currencies other than the one set on your company.</field>
</record> </record>
<menuitem <menuitem
id="account_financial_report_menu" id="account_financial_report_menu"
name="Account Financial Report (Templates)" name="Account Financial Report (Templates)"
@ -152,6 +114,5 @@
groups="account_financial_report.group_afreport" groups="account_financial_report.group_afreport"
action="account_financial_report_action"/> action="account_financial_report_action"/>
</data> </data>
</openerp> </openerp>

24
account_financial_report/view/report.xml

@ -46,6 +46,28 @@
header="False" header="False"
/> />
<report
auto="False"
id="partner_balance_report"
menu="True"
model="wizard.report"
name="afr.partner.balance"
rml="account_financial_report/report/balance_full_4_cols_partner_balance.rml"
string="Partner Balance"
header="False"
/>
<report
auto="False"
id="journal_ledger_report"
menu="True"
model="wizard.report"
name="afr.journal.ledger"
rml="account_financial_report/report/balance_full_4_cols_journal_ledger.rml"
string="journal Ledger"
header="False"
/>
<report <report
auto="False" auto="False"
id="5_col_report" id="5_col_report"
@ -78,5 +100,7 @@
string="Balance 13 Columnas" string="Balance 13 Columnas"
header="False" header="False"
/> />
</data> </data>
</openerp> </openerp>

100
account_financial_report/view/wizard.xml

@ -7,47 +7,62 @@
<field name="model">wizard.report</field> <field name="model">wizard.report</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Account Financial Report">
<group colspan="4">
<group colspan="2">
<separator string="Company Info" colspan="4"/>
<field name="company_id" on_change='onchange_company_id(company_id)' colspan="4"/>
<form string="Account Financial Report" version="7.0">
<header>
<button
name="print_report"
string="Print"
type="object"
class="oe_highlight" />
or
<button
type='special'
special='cancel'
string='_Cancel'
class="oe_link" />
</header>
<h2><label for="afr_id"/></h2>
<field name="afr_id" on_change='onchange_afr_id(afr_id)' nolabel="1"/>
<group>
<group string="Company Info">
<label for="company_id"/>
<field name="company_id" on_change='onchange_company_id(company_id)' nolabel="1"/>
<field name="currency_id" <field name="currency_id"
domain="[('company_id','=',company_id)]" domain="[('company_id','=',company_id)]"
attrs="{'readonly':[('analytic_ledger','=',True)]}"
colspan="4"/>
attrs="{'readonly':[('analytic_ledger','=',True)]}"/>
</group> </group>
<group colspan="2">
<separator string="Report Info" colspan="4"/>
<field name="afr_id" on_change='onchange_afr_id(afr_id)' colspan="4"/>
<group string="Report Info">
<field <field
name="inf_type" name="inf_type"
colspan="4"
on_change='onchange_inf_type(inf_type)' on_change='onchange_inf_type(inf_type)'
/> />
<field name="columns" on_change='onchange_columns(columns,fiscalyear,periods)' colspan="4"/>
<field name="analytic_ledger" colspan="4"
<field name="columns" on_change='onchange_columns(columns,fiscalyear,periods)'/>
<field name="analytic_ledger"
attrs="{'readonly':['|',('columns','!=','four'),('inf_type','!=','BS')],}" attrs="{'readonly':['|',('columns','!=','four'),('inf_type','!=','BS')],}"
on_change='onchange_analytic_ledger(company_id,analytic_ledger)' on_change='onchange_analytic_ledger(company_id,analytic_ledger)'
/> />
<field name="journal_ledger"
attrs="{'readonly':['|',('columns','!=','four'),('inf_type','!=','BS')],}"
/>
<field name="partner_balance"
attrs="{'readonly':['|',('columns','!=','four'),('inf_type','!=','BS')],}"
/>
</group> </group>
</group> </group>
<group colspan='4'>
<group colspan="2">
<separator string="Accounts Info" colspan="4"/>
<field name="display_account" required="True" colspan="4"/>
<field name="display_account_level" required="True" colspan="4"/>
<group>
<group string="Accounts Info">
<field name="display_account" required="True" />
<field name="display_account_level" required="True" />
<field name="target_move"/>
</group> </group>
<group colspan="2">
<separator string="FiscalYear Info" colspan="4"/>
<group string="FiscalYear Info">
<field name="fiscalyear" on_change='onchange_columns(columns,fiscalyear,periods)' domain="[('company_id','=',company_id)]"/> <field name="fiscalyear" on_change='onchange_columns(columns,fiscalyear,periods)' domain="[('company_id','=',company_id)]"/>
<newline/> <newline/>
</group> </group>
</group> </group>
<group colspan='4'>
<group colspan="1">
<separator string="Accounts to Include" colspan="4"/>
<field name="account_list" nolabel="1" colspan="4" domain="[('company_id','=',company_id)]">
<group >
<group string="Accounts to Include">
<field name="account_list" nolabel="1" domain="[('company_id','=',company_id)]">
<tree> <tree>
<field name='code'/> <field name='code'/>
<field name='name'/> <field name='name'/>
@ -56,16 +71,12 @@
</tree> </tree>
</field> </field>
</group> </group>
<group colspan="1">
<separator string="Periods to Include" colspan="4"/>
<group string="Periods to Include">
<field <field
name="periods" name="periods"
colspan="4"
nolabel="1" nolabel="1"
domain="[('fiscalyear_id','=',fiscalyear),('special','=',False),('company_id','=',company_id)]" domain="[('fiscalyear_id','=',fiscalyear),('special','=',False),('company_id','=',company_id)]"
attrs="{'readonly':[('columns','in',('qtr','thirteen'))],}"
>
attrs="{'readonly':[('columns','in',('qtr','thirteen'))],}">
<tree> <tree>
<field name='code'/> <field name='code'/>
<field name='name'/> <field name='name'/>
@ -74,34 +85,19 @@
</field> </field>
</group> </group>
</group> </group>
<group colspan='4'>
<separator string="Account's Sign Conventions" colspan="4"/>
<group string="Account's Sign Conventions">
<label string="Please check the [ Account's Sign on Reports ] Section in the Company"/> <label string="Please check the [ Account's Sign on Reports ] Section in the Company"/>
</group> </group>
<group colspan='4' col='4'>
<group colspan="2">
<separator string="Total" colspan="4"/>
<field name="tot_check" colspan="4"/>
<field name="lab_str" colspan="4" attrs="{'required':[('tot_check','=',True)], 'readonly':[('tot_check','=',False)],}" />
<group>
<group string="Total" >
<field name="tot_check" />
<field name="lab_str" attrs="{'required':[('tot_check','=',True)], 'readonly':[('tot_check','=',False)],}" />
</group> </group>
<group colspan="2">
<separator string="" colspan="4"/>
<button
name="print_report"
string="Print"
type="object"
icon='gtk-print'/>
<button
type='special'
special='cancel'
string='_Cancel'
icon='gtk-cancel'
/>
<group string=" " >
</group> </group>
</group> </group>
</form> </form>
</field> </field>
</record> </record>
@ -112,7 +108,7 @@
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="view_id" ref="wizard_report_view"/> <field name="view_id" ref="wizard_report_view"/>
<field name="target">new</field>
<field name="target">inline</field>
</record> </record>

2
account_financial_report/wizard/__init__.py

@ -3,7 +3,7 @@
# Module Writen to OpenERP, Open Source Management Solution # Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha humberto@openerp.com.ve # Coded by: Humberto Arocha humberto@openerp.com.ve
# Angelica Barrios angelicaisabelb@gmail.com # Angelica Barrios angelicaisabelb@gmail.com
# Jordi Esteve <jesteve@zikzakmedia.com> # Jordi Esteve <jesteve@zikzakmedia.com>

74
account_financial_report/wizard/wizard.py

@ -3,7 +3,7 @@
# Module Writen to OpenERP, Open Source Management Solution # Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>). # Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved # All Rights Reserved
###############Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha humberto@openerp.com.ve # Coded by: Humberto Arocha humberto@openerp.com.ve
# Angelica Barrios angelicaisabelb@gmail.com # Angelica Barrios angelicaisabelb@gmail.com
# Jordi Esteve <jesteve@zikzakmedia.com> # Jordi Esteve <jesteve@zikzakmedia.com>
@ -31,6 +31,7 @@ import pooler
import time import time
from tools.translate import _ from tools.translate import _
class wizard_report(osv.osv_memory): class wizard_report(osv.osv_memory):
_name = "wizard.report" _name = "wizard.report"
@ -49,10 +50,17 @@ class wizard_report(osv.osv_memory):
'periods': fields.many2many('account.period', 'rel_wizard_period', 'wizard_id', 'period_id', 'Periods', help='All periods in the fiscal year if empty'), 'periods': fields.many2many('account.period', 'rel_wizard_period', 'wizard_id', 'period_id', 'Periods', help='All periods in the fiscal year if empty'),
'analytic_ledger': fields.boolean('Analytic Ledger', help="Allows to Generate an Analytic Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"), 'analytic_ledger': fields.boolean('Analytic Ledger', help="Allows to Generate an Analytic Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"),
'journal_ledger': fields.boolean('Journal Ledger', help="Allows to Generate an Journal Ledger for accounts with moves. Available when Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"),
'partner_balance': fields.boolean('Partner Balance', help="Allows to "
"Generate a Partner Balance for accounts with moves. Available when "
"Balance Sheet and 'Initial | Debit | Credit | YTD' are selected"),
'tot_check': fields.boolean('Summarize?', help='Checking will add a new line at the end of the Report which will Summarize Columns in Report'), 'tot_check': fields.boolean('Summarize?', help='Checking will add a new line at the end of the Report which will Summarize Columns in Report'),
'lab_str': fields.char('Description', help='Description for the Summary', size=128), 'lab_str': fields.char('Description', help='Description for the Summary', size=128),
'target_move': fields.selection([('posted', 'All Posted Entries'),
('all', 'All Entries'),
], 'Entries to Include', required=True,
help='Print All Accounting Entries or just Posted Accounting Entries'),
#~ Deprecated fields #~ Deprecated fields
'filter': fields.selection([('bydate', 'By Date'), ('byperiod', 'By Period'), ('all', 'By Date and Period'), ('none', 'No Filter')], 'Date/Period Filter'), 'filter': fields.selection([('bydate', 'By Date'), ('byperiod', 'By Period'), ('all', 'By Date and Period'), ('none', 'No Filter')], 'Date/Period Filter'),
'date_to': fields.date('End date'), 'date_to': fields.date('End date'),
@ -69,6 +77,7 @@ class wizard_report(osv.osv_memory):
'fiscalyear': lambda self, cr, uid, c: self.pool.get('account.fiscalyear').find(cr, uid), 'fiscalyear': lambda self, cr, uid, c: self.pool.get('account.fiscalyear').find(cr, uid),
'display_account': lambda *a: 'bal_mov', 'display_account': lambda *a: 'bal_mov',
'columns': lambda *a: 'five', 'columns': lambda *a: 'five',
'target_move': 'posted',
} }
def onchange_inf_type(self, cr, uid, ids, inf_type, context=None): def onchange_inf_type(self, cr, uid, ids, inf_type, context=None):
@ -87,7 +96,8 @@ class wizard_report(osv.osv_memory):
res = {'value': {}} res = {'value': {}}
p_obj = self.pool.get("account.period") p_obj = self.pool.get("account.period")
all_periods = p_obj.search(cr,uid,[('fiscalyear_id','=',fiscalyear),('special','=',False)],context=context)
all_periods = p_obj.search(cr, uid, [('fiscalyear_id', '=', fiscalyear), (
'special', '=', False)], context=context)
s = set(periods[0][2]) s = set(periods[0][2])
t = set(all_periods) t = set(all_periods)
go = periods[0][2] and s.issubset(t) or False go = periods[0][2] and s.issubset(t) or False
@ -109,7 +119,8 @@ class wizard_report(osv.osv_memory):
context = {} context = {}
context['company_id'] = company_id context['company_id'] = company_id
res = {'value': {}} res = {'value': {}}
cur_id = self.pool.get('res.company').browse(cr,uid,company_id,context=context).currency_id.id
cur_id = self.pool.get('res.company').browse(
cr, uid, company_id, context=context).currency_id.id
res['value'].update({'currency_id': cur_id}) res['value'].update({'currency_id': cur_id})
return res return res
@ -122,8 +133,10 @@ class wizard_report(osv.osv_memory):
if not company_id: if not company_id:
return res return res
cur_id = self.pool.get('res.company').browse(cr,uid,company_id,context=context).currency_id.id
fy_id = self.pool.get('account.fiscalyear').find(cr, uid,context=context)
cur_id = self.pool.get('res.company').browse(
cr, uid, company_id, context=context).currency_id.id
fy_id = self.pool.get('account.fiscalyear').find(
cr, uid, context=context)
res['value'].update({'fiscalyear': fy_id}) res['value'].update({'fiscalyear': fy_id})
res['value'].update({'currency_id': cur_id}) res['value'].update({'currency_id': cur_id})
res['value'].update({'account_list': []}) res['value'].update({'account_list': []})
@ -135,29 +148,39 @@ class wizard_report(osv.osv_memory):
if context is None: if context is None:
context = {} context = {}
res = {'value': {}} res = {'value': {}}
if not afr_id: return res
if not afr_id:
return res
afr_brw = self.pool.get('afr').browse(cr, uid, afr_id, context=context) afr_brw = self.pool.get('afr').browse(cr, uid, afr_id, context=context)
res['value'].update({'currency_id':afr_brw.currency_id and afr_brw.currency_id.id or afr_brw.company_id.currency_id.id})
res['value'].update({
'currency_id': afr_brw.currency_id and afr_brw.currency_id.id or afr_brw.company_id.currency_id.id})
res['value'].update({'inf_type': afr_brw.inf_type or 'BS'}) res['value'].update({'inf_type': afr_brw.inf_type or 'BS'})
res['value'].update({'columns': afr_brw.columns or 'five'}) res['value'].update({'columns': afr_brw.columns or 'five'})
res['value'].update({'display_account':afr_brw.display_account or 'bal_mov'})
res['value'].update({'display_account_level':afr_brw.display_account_level or 0})
res['value'].update({'fiscalyear':afr_brw.fiscalyear_id and afr_brw.fiscalyear_id.id})
res['value'].update({'account_list':[acc.id for acc in afr_brw.account_ids]})
res['value'].update({
'display_account': afr_brw.display_account or 'bal_mov'})
res['value'].update({
'display_account_level': afr_brw.display_account_level or 0})
res['value'].update({
'fiscalyear': afr_brw.fiscalyear_id and afr_brw.fiscalyear_id.id})
res['value'].update({'account_list': [
acc.id for acc in afr_brw.account_ids]})
res['value'].update({'periods': [p.id for p in afr_brw.period_ids]}) res['value'].update({'periods': [p.id for p in afr_brw.period_ids]})
res['value'].update({'analytic_ledger':afr_brw.analytic_ledger or False})
res['value'].update({
'analytic_ledger': afr_brw.analytic_ledger or False})
res['value'].update({'tot_check': afr_brw.tot_check or False}) res['value'].update({'tot_check': afr_brw.tot_check or False})
res['value'].update({'lab_str':afr_brw.lab_str or _('Write a Description for your Summary Total')})
res['value'].update({'lab_str': afr_brw.lab_str or _(
'Write a Description for your Summary Total')})
return res return res
def _get_defaults(self, cr, uid, data, context=None): def _get_defaults(self, cr, uid, data, context=None):
if context is None: if context is None:
context = {} context = {}
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context)
user = pooler.get_pool(cr.dbname).get(
'res.users').browse(cr, uid, uid, context=context)
if user.company_id: if user.company_id:
company_id = user.company_id.id company_id = user.company_id.id
else: else:
company_id = pooler.get_pool(cr.dbname).get('res.company').search(cr, uid, [('parent_id', '=', False)])[0]
company_id = pooler.get_pool(cr.dbname).get(
'res.company').search(cr, uid, [('parent_id', '=', False)])[0]
data['form']['company_id'] = company_id data['form']['company_id'] = company_id
fiscalyear_obj = pooler.get_pool(cr.dbname).get('account.fiscalyear') fiscalyear_obj = pooler.get_pool(cr.dbname).get('account.fiscalyear')
data['form']['fiscalyear'] = fiscalyear_obj.find(cr, uid) data['form']['fiscalyear'] = fiscalyear_obj.find(cr, uid)
@ -176,7 +199,8 @@ class wizard_report(osv.osv_memory):
context = {} context = {}
if data['form']['date_from'] > data['form']['date_to']: if data['form']['date_from'] > data['form']['date_to']:
raise osv.except_osv(_('Error !'),('La fecha final debe ser mayor a la inicial'))
raise osv.except_osv(_('Error !'), (
'La fecha final debe ser mayor a la inicial'))
sql = """SELECT f.id, f.date_start, f.date_stop sql = """SELECT f.id, f.date_start, f.date_stop
FROM account_fiscalyear f FROM account_fiscalyear f
@ -186,7 +210,8 @@ class wizard_report(osv.osv_memory):
if res: if res:
if (data['form']['date_to'] > res[0]['date_stop'] or data['form']['date_from'] < res[0]['date_start']): if (data['form']['date_to'] > res[0]['date_stop'] or data['form']['date_from'] < res[0]['date_start']):
raise osv.except_osv(_('UserError'),'Las fechas deben estar entre %s y %s' % (res[0]['date_start'], res[0]['date_stop']))
raise osv.except_osv(_('UserError'), 'Las fechas deben estar entre %s y %s' % (
res[0]['date_start'], res[0]['date_stop']))
else: else:
return 'report' return 'report'
else: else:
@ -220,7 +245,8 @@ class wizard_report(osv.osv_memory):
del data['form']['date_from'] del data['form']['date_from']
del data['form']['date_to'] del data['form']['date_to']
data['form']['periods'] = self.period_span(cr, uid, data['form']['periods'], data['form']['fiscalyear'])
data['form']['periods'] = self.period_span(cr, uid, data[
'form']['periods'], data['form']['fiscalyear'])
elif data['form']['filter'] == 'bydate': elif data['form']['filter'] == 'bydate':
self._check_date(cr, uid, data) self._check_date(cr, uid, data)
@ -231,7 +257,8 @@ class wizard_report(osv.osv_memory):
del data['form']['periods'] del data['form']['periods']
else: else:
self._check_date(cr, uid, data) self._check_date(cr, uid, data)
lis2 = str(data['form']['periods']).replace("[","(").replace("]",")")
lis2 = str(data['form']['periods']).replace(
"[", "(").replace("]", ")")
sqlmm = """select min(p.date_start) as inicio, max(p.date_stop) as fin sqlmm = """select min(p.date_start) as inicio, max(p.date_stop) as fin
from account_period p from account_period p
where p.id in %s""" % lis2 where p.id in %s""" % lis2
@ -239,7 +266,8 @@ class wizard_report(osv.osv_memory):
minmax = cr.dictfetchall() minmax = cr.dictfetchall()
if minmax: if minmax:
if (data['form']['date_to'] < minmax[0]['inicio']) or (data['form']['date_from'] > minmax[0]['fin']): if (data['form']['date_to'] < minmax[0]['inicio']) or (data['form']['date_from'] > minmax[0]['fin']):
raise osv.except_osv(_('Error !'),_('La interseccion entre el periodo y fecha es vacio'))
raise osv.except_osv(_('Error !'), _(
'La interseccion entre el periodo y fecha es vacio'))
if data['form']['columns'] == 'one': if data['form']['columns'] == 'one':
name = 'afr.1cols' name = 'afr.1cols'
@ -248,6 +276,10 @@ class wizard_report(osv.osv_memory):
if data['form']['columns'] == 'four': if data['form']['columns'] == 'four':
if data['form']['analytic_ledger'] and data['form']['inf_type'] == 'BS': if data['form']['analytic_ledger'] and data['form']['inf_type'] == 'BS':
name = 'afr.analytic.ledger' name = 'afr.analytic.ledger'
elif data['form']['journal_ledger'] and data['form']['inf_type'] == 'BS':
name = 'afr.journal.ledger'
elif data['form']['partner_balance'] and data['form']['inf_type'] == 'BS':
name = 'afr.partner.balance'
else: else:
name = 'afr.4cols' name = 'afr.4cols'
if data['form']['columns'] == 'five': if data['form']['columns'] == 'five':

Loading…
Cancel
Save