diff --git a/sql_export/demo/sql_export.xml b/sql_export/demo/sql_export.xml
index fa1268bc7..4c20291b9 100644
--- a/sql_export/demo/sql_export.xml
+++ b/sql_export/demo/sql_export.xml
@@ -7,6 +7,34 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+ x_date
+ Date
+ date
+
+ sql.file.wizard
+ manual
+
+
+
+ x_id
+ ID
+ integer
+
+ sql.file.wizard
+ manual
+
+
+
+ x_partner_categ_ids
+ Partner Categories
+ many2many
+
+ sql.file.wizard
+ manual
+ res.partner.category
+
+
Export Partners (Demo Data)
SELECT name, street FROM res_partner;
@@ -14,4 +42,12 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+ Export Partners With Variables (Demo Data)
+ SELECT p.id FROM res_partner p LEFT JOIN res_partner_res_partner_category_rel rel ON rel.partner_id = p.id WHERE create_date < %(x_date)s AND id = %(x_id)s AND rel.category_id in %(x_partner_categ_ids)s
+
+
+
+
+
diff --git a/sql_export/tests/test_sql_query.py b/sql_export/tests/test_sql_query.py
index 94ea9c15e..7b0c48b73 100644
--- a/sql_export/tests/test_sql_query.py
+++ b/sql_export/tests/test_sql_query.py
@@ -4,7 +4,8 @@
import base64
from odoo.tests.common import TransactionCase, post_install
-from odoo.exceptions import Warning as UserError
+from odoo.exceptions import UserError
+from odoo import fields
@post_install(True)
@@ -56,3 +57,16 @@ class TestExportSqlQuery(TransactionCase):
self.assertEqual(
sql_export.state, 'sql_valid',
"%s is a valid request" % (query))
+
+ def test_sql_query_with_params(self):
+ query = self.env.ref('sql_export.sql_export_partner_with_variables')
+ categ_id = self.env.ref('base.res_partner_category_0').id
+ wizard = self.wizard_obj.create({
+ 'sql_export_id': query.id,
+ 'x_date': fields.Date.today(),
+ 'x_id': 1,
+ 'x_partner_categ_ids': [(6, 0, [categ_id])]
+ })
+ wizard.export_sql()
+ export = base64.b64decode(wizard.binary_file)
+ self.assertTrue(export)
diff --git a/sql_export/views/sql_export_view.xml b/sql_export/views/sql_export_view.xml
index 53ac7f4f0..3bdc86b71 100644
--- a/sql_export/views/sql_export_view.xml
+++ b/sql_export/views/sql_export_view.xml
@@ -73,8 +73,18 @@
Sql_parameter_form_view
ir.model.fields
+ 150
@@ -82,22 +92,40 @@
Sql_parameter_tree_view
ir.model.fields
+ 150
+
+
+
-
+
SQL Parameter
ir.model.fields
form
tree,form
-
+
[('model','=','sql.file.wizard')]
-
+
+
+ tree
+
+
+
+
+
+
+ form
+
+
+
+
+
diff --git a/sql_export/wizard/wizard_file.py b/sql_export/wizard/wizard_file.py
index fad2c569c..25031b2f7 100644
--- a/sql_export/wizard/wizard_file.py
+++ b/sql_export/wizard/wizard_file.py
@@ -62,7 +62,12 @@ class SqlFileWizard(models.TransientModel):
date = now_tz.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
if sql_export.field_ids:
for field in sql_export.field_ids:
- variable_dict[field.name] = self[field.name]
+ if field.ttype == 'many2one':
+ variable_dict[field.name] = self[field.name].id
+ elif field.ttype == 'many2many':
+ variable_dict[field.name] = tuple(self[field.name].ids)
+ else:
+ variable_dict[field.name] = self[field.name]
if "%(company_id)s" in sql_export.query:
variable_dict['company_id'] = self.env.user.company_id.id
if "%(user_id)s" in sql_export.query: