diff --git a/addons/hr_attendance/static/src/js/kiosk_mode.js b/addons/hr_attendance/static/src/js/kiosk_mode.js
index 51c78bd34b4..9a7e2898df1 100644
--- a/addons/hr_attendance/static/src/js/kiosk_mode.js
+++ b/addons/hr_attendance/static/src/js/kiosk_mode.js
@@ -36,6 +36,8 @@ var KioskMode = Widget.extend(BarcodeHandlerMixin, {
self.$el.html(QWeb.render("HrAttendanceKioskMode", {widget: self}));
self.start_clock();
});
+ // Make a RPC call every day to keep the session alive
+ self._interval = window.setInterval(this._callServer.bind(this), (60*60*1000*24));
return self._super.apply(this, arguments);
},
@@ -60,8 +62,15 @@ var KioskMode = Widget.extend(BarcodeHandlerMixin, {
destroy: function () {
clearInterval(this.clock_start);
+ clearInterval(this._interval);
this._super.apply(this, arguments);
},
+
+ _callServer: function () {
+ // Make a call to the database to avoid the auto close of the session
+ return Session.rpc('/web/webclient/version_info', {})
+ },
+
});
core.action_registry.add('hr_attendance_kiosk_mode', KioskMode);
diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py
index dc158c76226..9399d74c760 100644
--- a/addons/purchase/report/purchase_report.py
+++ b/addons/purchase/report/purchase_report.py
@@ -88,7 +88,7 @@ class PurchaseReport(models.Model):
join res_partner partner on s.partner_id = partner.id
left join product_product p on (l.product_id=p.id)
left join product_template t on (p.product_tmpl_id=t.id)
- LEFT JOIN ir_property ip ON (ip.name='standard_price' AND ip.res_id=CONCAT('product.template,',t.id) AND ip.company_id=s.company_id)
+ LEFT JOIN ir_property ip ON (ip.name='standard_price' AND ip.res_id=CONCAT('product.product,',p.id) AND ip.company_id=s.company_id)
left join product_uom u on (u.id=l.product_uom)
left join product_uom u2 on (u2.id=t.uom_id)
left join stock_picking_type spt on (spt.id=s.picking_type_id)
diff --git a/odoo/addons/base/res/res_partner.py b/odoo/addons/base/res/res_partner.py
index 4242fee8098..0aee222db5c 100644
--- a/odoo/addons/base/res/res_partner.py
+++ b/odoo/addons/base/res/res_partner.py
@@ -180,7 +180,9 @@ class Partner(models.Model):
[('contact', 'Contact'),
('invoice', 'Invoice address'),
('delivery', 'Shipping address'),
- ('other', 'Other address')], string='Address Type',
+ ('other', 'Other address'),
+ ("private", "Private Address"),
+ ], string='Address Type',
default='contact',
help="Used to select automatically the right address according to the context in sales and purchases documents.")
street = fields.Char()
diff --git a/odoo/addons/base/res/res_partner_view.xml b/odoo/addons/base/res/res_partner_view.xml
index 249029075fb..9a0c789db45 100644
--- a/odoo/addons/base/res/res_partner_view.xml
+++ b/odoo/addons/base/res/res_partner_view.xml
@@ -327,6 +327,50 @@
+
+
+ res.partner.view.form.private
+ res.partner
+
+
+
+
+
+
res.partner.select
res.partner
diff --git a/odoo/addons/base/security/base_security.xml b/odoo/addons/base/security/base_security.xml
index ab4191de93a..b02ebfedc18 100644
--- a/odoo/addons/base/security/base_security.xml
+++ b/odoo/addons/base/security/base_security.xml
@@ -49,6 +49,10 @@
+
+ Access to Private Addresses
+
+
+
+ res.partner.rule.private.employee
+
+
+ [('type', '!=', 'private')]
+
+
+
+
+
+
+
+
+
+ res.partner.rule.private.group
+
+
+ [('type', '=', 'private')]
+
+
+
+
+
+
+
+