[MIG] account_financial_report: Migration to 12.0
[IMP] Reformated one query to avoid one sql injection warning message - but no sql injection was possible herepull/939/head
parent
eef23b98c9
commit
5de9efa547
|
@ -4,7 +4,7 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
{
|
||||
'name': 'Account Financial Reports',
|
||||
'version': '11.0.2.5.0',
|
||||
'version': '12.0.1.0.0',
|
||||
'category': 'Reporting',
|
||||
'summary': 'OCA Financial Reports',
|
||||
'author': 'Camptocamp SA,'
|
||||
|
@ -15,7 +15,6 @@
|
|||
"website": "https://odoo-community.org/",
|
||||
'depends': [
|
||||
'account',
|
||||
'account_invoicing',
|
||||
'date_range',
|
||||
'report_xlsx',
|
||||
],
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
groups="base.group_erp_manager"
|
||||
/>
|
||||
|
||||
<!--
|
||||
<menuitem
|
||||
id="account.menu_general_ledger"
|
||||
name="General Ledger"
|
||||
|
@ -96,6 +97,6 @@
|
|||
action="account.action_account_aged_balance_view"
|
||||
parent="account.menu_finance_legal_statement"
|
||||
groups="base.group_erp_manager"
|
||||
/>
|
||||
/>-->
|
||||
|
||||
</odoo>
|
||||
|
|
|
@ -14,9 +14,9 @@ class AbstractReport(models.AbstractModel):
|
|||
# Never delete rows used in last 5 minutes
|
||||
seconds = max(seconds, 300)
|
||||
query = """
|
||||
DELETE FROM """ + self._table + """
|
||||
DELETE FROM %s
|
||||
WHERE COALESCE(
|
||||
write_date, create_date, (now() at time zone 'UTC'))::timestamp
|
||||
< ((now() at time zone 'UTC') - interval %s)
|
||||
"""
|
||||
self.env.cr.execute(query, ("%s seconds" % seconds,))
|
||||
self.env.cr.execute(query, (self._table, "%s seconds" % seconds,))
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
# Copyright 2016 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from odoo import models
|
||||
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
import datetime
|
||||
|
||||
|
||||
class AbstractReportXslx(models.AbstractModel):
|
||||
|
@ -188,6 +190,8 @@ class AbstractReportXslx(models.AbstractModel):
|
|||
"""
|
||||
for col_pos, column in self.columns.items():
|
||||
value = getattr(line_object, column['field'])
|
||||
if isinstance(value, datetime.date):
|
||||
value = datetime.datetime.strftime(value, DEFAULT_SERVER_DATE_FORMAT)
|
||||
cell_type = column.get('type', 'string')
|
||||
if cell_type == 'many2one':
|
||||
self.sheet.write_string(
|
||||
|
|
|
@ -195,7 +195,7 @@ class AgedPartnerBalanceReportCompute(models.TransientModel):
|
|||
report = self.env['ir.actions.report'].search(
|
||||
[('report_name', '=', report_name),
|
||||
('report_type', '=', report_type)], limit=1)
|
||||
return report.report_action(self)
|
||||
return report.report_action(self, config=False)
|
||||
|
||||
def _get_html(self):
|
||||
result = {}
|
||||
|
|
|
@ -224,7 +224,7 @@ class GeneralLedgerReportCompute(models.TransientModel):
|
|||
'report_general_ledger_qweb'
|
||||
return self.env['ir.actions.report'].search(
|
||||
[('report_name', '=', report_name),
|
||||
('report_type', '=', report_type)], limit=1).report_action(self)
|
||||
('report_type', '=', report_type)], limit=1).report_action(self, config=False)
|
||||
|
||||
def _get_html(self):
|
||||
result = {}
|
||||
|
|
|
@ -594,7 +594,7 @@ class ReportJournalLedger(models.TransientModel):
|
|||
'report_journal_ledger_qweb'
|
||||
return self.env['ir.actions.report'].search(
|
||||
[('report_name', '=', report_name),
|
||||
('report_type', '=', report_type)], limit=1).report_action(self)
|
||||
('report_type', '=', report_type)], limit=1).report_action(self, config=False)
|
||||
|
||||
def _get_html(self):
|
||||
result = {}
|
||||
|
|
|
@ -160,7 +160,7 @@ class OpenItemsReportCompute(models.TransientModel):
|
|||
'report_open_items_qweb'
|
||||
return self.env['ir.actions.report'].search(
|
||||
[('report_name', '=', report_name),
|
||||
('report_type', '=', report_type)], limit=1).report_action(self)
|
||||
('report_type', '=', report_type)], limit=1).report_action(self, config=False)
|
||||
|
||||
def _get_html(self):
|
||||
result = {}
|
||||
|
|
|
@ -209,7 +209,7 @@ class TrialBalanceReportCompute(models.TransientModel):
|
|||
'report_trial_balance_qweb'
|
||||
return self.env['ir.actions.report'].search(
|
||||
[('report_name', '=', report_name),
|
||||
('report_type', '=', report_type)], limit=1).report_action(self)
|
||||
('report_type', '=', report_type)], limit=1).report_action(self, config=False)
|
||||
|
||||
def _get_html(self):
|
||||
result = {}
|
||||
|
@ -410,7 +410,7 @@ SELECT
|
|||
accgroup.parent_id,
|
||||
coalesce(accgroup.code_prefix, accgroup.name),
|
||||
accgroup.name,
|
||||
accgroup.parent_left * 100000,
|
||||
accgroup.id * 100000,
|
||||
accgroup.level
|
||||
FROM
|
||||
account_group accgroup"""
|
||||
|
|
|
@ -112,7 +112,7 @@ class VATReportCompute(models.TransientModel):
|
|||
action = self.env['ir.actions.report'].search(
|
||||
[('report_name', '=', report_name),
|
||||
('report_type', '=', report_type)], limit=1)
|
||||
return action.with_context(context).report_action(self)
|
||||
return action.with_context(context).report_action(self, config=False)
|
||||
|
||||
def _get_html(self):
|
||||
result = {}
|
||||
|
|
|
@ -57,10 +57,35 @@ odoo.define('account_financial_report.account_financial_report_backend', functio
|
|||
args: [self.given_context],
|
||||
context: self.odoo_context,
|
||||
})
|
||||
.then(function (result) {
|
||||
self.html = result.html;
|
||||
defs.push(self.update_cp());
|
||||
return $.when.apply($, defs);
|
||||
.then(function (result) {
|
||||
self.html = result.html;
|
||||
defs.push(self.update_cp());
|
||||
return $.when.apply($, defs);
|
||||
});
|
||||
},
|
||||
// Updates the control panel and render the elements that have yet to be rendered
|
||||
update_cp: function() {
|
||||
if (this.$buttons) {
|
||||
var status = {
|
||||
breadcrumbs: this.actionManager.get_breadcrumbs(),
|
||||
cp_content: {$buttons: this.$buttons},
|
||||
};
|
||||
return this.update_control_panel(status);
|
||||
}
|
||||
},
|
||||
do_show: function() {
|
||||
this._super();
|
||||
this.update_cp();
|
||||
},
|
||||
print: function() {
|
||||
var self = this;
|
||||
this._rpc({
|
||||
model: this.given_context.model,
|
||||
method: 'print_report',
|
||||
args: [this.given_context.active_id, 'qweb-pdf'],
|
||||
context: self.odoo_context,
|
||||
}).then(function(result){
|
||||
self.do_action(result);
|
||||
});
|
||||
},
|
||||
// Updates the control panel and render the elements that have yet
|
||||
|
@ -101,6 +126,9 @@ odoo.define('account_financial_report.account_financial_report_backend', functio
|
|||
self.do_action(result);
|
||||
});
|
||||
},
|
||||
canBeRemoved: function () {
|
||||
return $.when();
|
||||
},
|
||||
});
|
||||
|
||||
core.action_registry.add(
|
||||
|
|
|
@ -36,7 +36,7 @@ class AbstractTest(common.TransactionCase):
|
|||
'bank_account_code_prefix': 1014,
|
||||
'cash_account_code_prefix': 1014,
|
||||
'currency_id': self.ref('base.USD'),
|
||||
'transfer_account_id': transfer_account_id.id,
|
||||
'transfer_account_code_prefix': '000',
|
||||
})
|
||||
transfer_account_id.update({
|
||||
'chart_template_id': self.chart.id,
|
||||
|
@ -98,7 +98,6 @@ class AbstractTest(common.TransactionCase):
|
|||
def _add_chart_of_accounts(self):
|
||||
self.company = self.env['res.company'].create({
|
||||
'name': 'Spanish test company',
|
||||
'external_report_layout': 'standard',
|
||||
})
|
||||
self.env.ref('base.group_multi_company').write({
|
||||
'users': [(4, self.env.uid)],
|
||||
|
@ -109,15 +108,7 @@ class AbstractTest(common.TransactionCase):
|
|||
})
|
||||
self.with_context(
|
||||
company_id=self.company.id, force_company=self.company.id)
|
||||
wizard = self.env['wizard.multi.charts.accounts'].create({
|
||||
'company_id': self.company.id,
|
||||
'chart_template_id': self.chart.id,
|
||||
'code_digits': 4,
|
||||
'currency_id': self.ref('base.USD'),
|
||||
'transfer_account_id': self.chart.transfer_account_id.id,
|
||||
})
|
||||
wizard.onchange_chart_template_id()
|
||||
wizard.execute()
|
||||
self.chart.try_loading_for_current_company()
|
||||
self.revenue = self.env['account.account'].search(
|
||||
[('user_type_id', '=', self.ref(
|
||||
"account.data_account_type_revenue"))], limit=1)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright 2016 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
import time
|
||||
from datetime import date
|
||||
from . import abstract_test
|
||||
|
||||
|
||||
|
@ -29,7 +29,7 @@ class TestAgedPartnerBalance(abstract_test.AbstractTest):
|
|||
|
||||
def _getBaseFilters(self):
|
||||
return {
|
||||
'date_at': time.strftime('%Y-12-31'),
|
||||
'date_at': date(date.today().year, 12, 31),
|
||||
'company_id': self.company.id,
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
import time
|
||||
|
||||
from odoo.tests import common
|
||||
from datetime import date, datetime
|
||||
from . import abstract_test_foreign_currency as a_t_f_c
|
||||
|
||||
|
||||
|
@ -31,10 +32,10 @@ class TestGeneralLedger(a_t_f_c.AbstractTestForeignCurrency):
|
|||
|
||||
def _getBaseFilters(self):
|
||||
return {
|
||||
'date_from': time.strftime('%Y-01-01'),
|
||||
'date_to': time.strftime('%Y-12-31'),
|
||||
'date_from': date(date.today().year, 1, 1),
|
||||
'date_to': date(date.today().year, 12, 31),
|
||||
'company_id': self.company.id,
|
||||
'fy_start_date': time.strftime('%Y-01-01'),
|
||||
'fy_start_date': date(date.today().year, 1, 1),
|
||||
'foreign_currency': True,
|
||||
}
|
||||
|
||||
|
@ -87,11 +88,11 @@ class TestGeneralLedgerReport(common.TransactionCase):
|
|||
|
||||
def setUp(self):
|
||||
super(TestGeneralLedgerReport, self).setUp()
|
||||
self.before_previous_fy_year = '2014-05-05'
|
||||
self.previous_fy_date_start = '2015-01-01'
|
||||
self.previous_fy_date_end = '2015-12-31'
|
||||
self.fy_date_start = '2016-01-01'
|
||||
self.fy_date_end = '2016-12-31'
|
||||
self.before_previous_fy_year = datetime.strptime('2014-05-05', '%Y-%m-%d')
|
||||
self.previous_fy_date_start = datetime.strptime('2015-01-01', '%Y-%m-%d')
|
||||
self.previous_fy_date_end = datetime.strptime('2015-12-31', '%Y-%m-%d')
|
||||
self.fy_date_start = datetime.strptime('2016-01-01', '%Y-%m-%d')
|
||||
self.fy_date_end = datetime.strptime('2016-12-31', '%Y-%m-%d')
|
||||
self.receivable_account = self.env['account.account'].search([
|
||||
('user_type_id.name', '=', 'Receivable')
|
||||
], limit=1)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import time
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import datetime, date
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from odoo.fields import Date
|
||||
|
@ -34,8 +34,8 @@ class TestJournalLedger(a_t_f_c.AbstractTestForeignCurrency):
|
|||
|
||||
def _getBaseFilters(self):
|
||||
return {
|
||||
'date_from': time.strftime('%Y-01-01'),
|
||||
'date_to': time.strftime('%Y-12-31'),
|
||||
'date_from': date(date.today().year, 1, 1),
|
||||
'date_to': date(date.today().year, 12, 31),
|
||||
'company_id': self.company.id,
|
||||
'journal_ids': [(6, 0, self.journal_sale.ids)]
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright 2016 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
import time
|
||||
from datetime import date
|
||||
from . import abstract_test_foreign_currency as a_t_f_c
|
||||
|
||||
|
||||
|
@ -28,7 +28,7 @@ class TestOpenItems(a_t_f_c.AbstractTestForeignCurrency):
|
|||
|
||||
def _getBaseFilters(self):
|
||||
return {
|
||||
'date_at': time.strftime('%Y-12-31'),
|
||||
'date_at': date(date.today().year, 12, 31),
|
||||
'company_id': self.company.id,
|
||||
'foreign_currency': True,
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
import time
|
||||
|
||||
from datetime import date
|
||||
from odoo.tests import common
|
||||
from . import abstract_test_foreign_currency as a_t_f_c
|
||||
|
||||
|
@ -30,10 +30,10 @@ class TestTrialBalance(a_t_f_c.AbstractTestForeignCurrency):
|
|||
|
||||
def _getBaseFilters(self):
|
||||
return {
|
||||
'date_from': time.strftime('%Y-01-01'),
|
||||
'date_to': time.strftime('%Y-12-31'),
|
||||
'date_from': date(date.today().year, 1, 1),
|
||||
'date_to': date(date.today().year, 12, 31),
|
||||
'company_id': self.company.id,
|
||||
'fy_start_date': time.strftime('%Y-01-01'),
|
||||
'fy_start_date': date(date.today().year, 1, 1),
|
||||
'foreign_currency': True,
|
||||
'show_partner_details': True,
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
import time
|
||||
|
||||
from datetime import date
|
||||
from odoo.tests import common
|
||||
from . import abstract_test_tax_report
|
||||
|
||||
|
@ -29,8 +29,8 @@ class TestVAT(abstract_test_tax_report.AbstractTest):
|
|||
|
||||
def _getBaseFilters(self):
|
||||
return {
|
||||
'date_from': time.strftime('%Y-01-01'),
|
||||
'date_to': time.strftime('%Y-12-31'),
|
||||
'date_from': date(date.today().year, 1, 1),
|
||||
'date_to': date(date.today().year, 12, 31),
|
||||
'company_id': self.env.user.company_id.id,
|
||||
}
|
||||
|
||||
|
@ -157,7 +157,7 @@ class TestVATReport(common.TransactionCase):
|
|||
|
||||
def _get_report_lines(self):
|
||||
self.cbinvoice.pay_and_reconcile(
|
||||
self.bank_journal.id, 300, time.strftime('%Y-%m-10'))
|
||||
self.bank_journal.id, 300, date(date.today().year, date.today().month, 10))
|
||||
vat_report = self.env['report_vat_report'].create({
|
||||
'date_from': self.date_from,
|
||||
'date_to': self.date_to,
|
||||
|
@ -274,8 +274,8 @@ class TestVATReport(common.TransactionCase):
|
|||
'date_to': time.strftime('%Y-%m-01'),
|
||||
'tax_detail': True})
|
||||
wizard.onchange_date_range_id()
|
||||
self.assertEqual(wizard.date_from, time.strftime('%Y-%m-01'))
|
||||
self.assertEqual(wizard.date_to, time.strftime('%Y-%m-28'))
|
||||
self.assertEqual(wizard.date_from, date(date.today().year, 1, 1))
|
||||
self.assertEqual(wizard.date_to, date(date.today().year, date.today().month, 28))
|
||||
wizard._export('qweb-pdf')
|
||||
wizard.button_export_html()
|
||||
wizard.button_export_pdf()
|
||||
|
@ -287,8 +287,8 @@ class TestVATReport(common.TransactionCase):
|
|||
'based_on': 'taxgroups',
|
||||
'tax_detail': True})
|
||||
wizard.onchange_date_range_id()
|
||||
self.assertEqual(wizard.date_from, time.strftime('%Y-%m-01'))
|
||||
self.assertEqual(wizard.date_to, time.strftime('%Y-%m-28'))
|
||||
self.assertEqual(wizard.date_from, date(date.today().year, 1, 1))
|
||||
self.assertEqual(wizard.date_to, date(date.today().year, date.today().month, 28))
|
||||
wizard._export('qweb-pdf')
|
||||
wizard.button_export_html()
|
||||
wizard.button_export_pdf()
|
||||
|
|
|
@ -9,9 +9,10 @@
|
|||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.tools.safe_eval import safe_eval
|
||||
from odoo.tools import pycompat
|
||||
from odoo.tools import pycompat, DEFAULT_SERVER_DATE_FORMAT
|
||||
from odoo.exceptions import ValidationError
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class GeneralLedgerReportWizard(models.TransientModel):
|
||||
|
@ -121,7 +122,7 @@ class GeneralLedgerReportWizard(models.TransientModel):
|
|||
for wiz in self.filtered('date_from'):
|
||||
date = fields.Datetime.from_string(wiz.date_from)
|
||||
res = self.company_id.compute_fiscalyear_dates(date)
|
||||
wiz.fy_start_date = res['date_from']
|
||||
wiz.fy_start_date = datetime.strftime(res['date_from'], DEFAULT_SERVER_DATE_FORMAT)
|
||||
|
||||
@api.onchange('company_id')
|
||||
def onchange_company_id(self):
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.tools.safe_eval import safe_eval
|
||||
from odoo.tools import pycompat
|
||||
from odoo.tools import pycompat, DEFAULT_SERVER_DATE_FORMAT
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
class TrialBalanceReportWizard(models.TransientModel):
|
||||
"""Trial balance report wizard."""
|
||||
|
@ -98,7 +98,7 @@ class TrialBalanceReportWizard(models.TransientModel):
|
|||
for wiz in self.filtered('date_from'):
|
||||
date = fields.Datetime.from_string(wiz.date_from)
|
||||
res = self.company_id.compute_fiscalyear_dates(date)
|
||||
wiz.fy_start_date = res['date_from']
|
||||
wiz.fy_start_date = datetime.strftime(res['date_from'], DEFAULT_SERVER_DATE_FORMAT)
|
||||
|
||||
@api.onchange('company_id')
|
||||
def onchange_company_id(self):
|
||||
|
|
Loading…
Reference in New Issue