summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-02-06 17:18:24 +0100
committerChristophe Simonis <chs@odoo.com>2017-02-06 17:18:24 +0100
commit9ec95b2a682ca885c0796c8e299ac720e8b7e5d8 (patch)
tree45e714cb068dfd88508f9e1255a03bfa05805da7
parent93448bb2b86d6f47005448080337b980470f6d5f (diff)
parent51b79a7ee1608e673bfc516c072c803505691c73 (diff)
[MERGE] forward port branch saas-11 up to 51b79a7ee16
-rw-r--r--addons/point_of_sale/static/src/js/chrome.js14
-rw-r--r--addons/point_of_sale/static/src/js/gui.js36
-rw-r--r--addons/point_of_sale/static/src/js/popups.js4
-rw-r--r--addons/point_of_sale/static/src/xml/pos.xml5
-rw-r--r--addons/purchase/models/purchase.py1
-rw-r--r--addons/stock/models/stock_pack_operation.py8
-rw-r--r--addons/stock/tests/test_stock_flow.py6
-rw-r--r--addons/web/static/src/js/views/list_view.js2
8 files changed, 56 insertions, 20 deletions
diff --git a/addons/point_of_sale/static/src/js/chrome.js b/addons/point_of_sale/static/src/js/chrome.js
index f7bf1f78010..02d1123bcc3 100644
--- a/addons/point_of_sale/static/src/js/chrome.js
+++ b/addons/point_of_sale/static/src/js/chrome.js
@@ -278,13 +278,19 @@ var DebugWidget = PosBaseWidget.extend({
});
this.$('.button.export_unpaid_orders').click(function(){
- self.gui.download_file(self.pos.export_unpaid_orders(),
- "unpaid_orders_" + (new Date()).toUTCString().replace(/\ /g,'_') + '.json');
+ self.gui.prepare_download_link(
+ self.pos.export_unpaid_orders(),
+ _t("unpaid orders") + ' ' + moment().format('YYYY-MM-DD-HH-mm-ss') + '.json',
+ ".export_unpaid_orders", ".download_unpaid_orders"
+ );
});
this.$('.button.export_paid_orders').click(function() {
- self.gui.download_file(self.pos.export_paid_orders(),
- "paid_orders_" + (new Date()).toUTCString().replace(/\ /g,'_') + '.json');
+ self.gui.prepare_download_link(
+ self.pos.export_paid_orders(),
+ _t("paid orders") + ' ' + moment().format('YYYY-MM-DD-HH-mm-ss') + '.json',
+ ".export_paid_orders", ".download_paid_orders"
+ );
});
this.$('.button.import_orders input').on('change', function(event) {
diff --git a/addons/point_of_sale/static/src/js/gui.js b/addons/point_of_sale/static/src/js/gui.js
index f0755fa7573..87cb30caf78 100644
--- a/addons/point_of_sale/static/src/js/gui.js
+++ b/addons/point_of_sale/static/src/js/gui.js
@@ -362,7 +362,34 @@ var Gui = core.Class.extend({
// if 'contents' is not a string, it is converted into
// a JSON representation of the contents.
+
+ // TODO: remove me in master: deprecated in favor of prepare_download_link
+ // this method is kept for backward compatibility but is likely not going
+ // to work as many browsers do to not accept fake click events on links
download_file: function(contents, name) {
+ href_params = this.prepare_file_blob(contents,name);
+ var evt = document.createEvent("HTMLEvents");
+ evt.initEvent("click");
+
+ $("<a>",href_params).get(0).dispatchEvent(evt);
+
+ },
+
+ prepare_download_link: function(contents, filename, src, target) {
+ var href_params = this.prepare_file_blob(contents, filename);
+
+ $(target).parent().attr(href_params);
+ $(src).addClass('oe_hidden');
+ $(target).removeClass('oe_hidden');
+
+ // hide again after click
+ $(target).click(function() {
+ $(src).removeClass('oe_hidden');
+ $(this).addClass('oe_hidden');
+ });
+ },
+
+ prepare_file_blob: function(contents, name) {
var URL = window.URL || window.webkitURL;
if (typeof contents !== 'string') {
@@ -371,13 +398,8 @@ var Gui = core.Class.extend({
var blob = new Blob([contents]);
- var evt = document.createEvent("HTMLEvents");
- evt.initEvent("click");
-
- $("<a>",{
- download: name || 'document.txt',
- href: URL.createObjectURL(blob),
- }).get(0).dispatchEvent(evt);
+ return {download: name || 'document.txt',
+ href: URL.createObjectURL(blob),}
},
/* ---- Gui: EMAILS ---- */
diff --git a/addons/point_of_sale/static/src/js/popups.js b/addons/point_of_sale/static/src/js/popups.js
index f4429840237..eaeae4d6f83 100644
--- a/addons/point_of_sale/static/src/js/popups.js
+++ b/addons/point_of_sale/static/src/js/popups.js
@@ -105,7 +105,9 @@ var ErrorTracebackPopupWidget = ErrorPopupWidget.extend({
this._super(opts);
this.$('.download').off('click').click(function(){
- self.gui.download_file(self.options.body,'traceback.txt');
+ self.gui.prepare_download_link(self.options.body,
+ _t('error') + ' ' + moment().format('YYYY-MM-DD-HH-mm-ss') + '.txt',
+ '.download', '.download_error_file');
});
this.$('.email').off('click').click(function(){
diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml
index 3245c9a409b..01da370ed18 100644
--- a/addons/point_of_sale/static/src/xml/pos.xml
+++ b/addons/point_of_sale/static/src/xml/pos.xml
@@ -975,6 +975,9 @@
<div class="button cancel">
Ok
</div>
+ <a><div class="button icon download_error_file oe_hidden">
+ <i class="fa fa-arrow-down"></i>
+ </div></a>
<div class="button icon download">
<i class="fa fa-download"></i>
</div>
@@ -1308,7 +1311,9 @@
<li class="button delete_orders">Delete Paid Orders</li>
<li class="button delete_unpaid_orders">Delete Unpaid Orders</li>
<li class="button export_paid_orders">Export Paid Orders</li>
+ <a><li class="button download_paid_orders oe_hidden">Download Paid Orders</li></a>
<li class="button export_unpaid_orders">Export Unpaid Orders</li>
+ <a><li class="button download_unpaid_orders oe_hidden">Download Unpaid Orders</li></a>
<li class="button import_orders" style="position:relative">
Import Orders
<input type="file" style="opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;margin:0;cursor:pointer"/>
diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py
index eeda0914444..5956a743872 100644
--- a/addons/purchase/models/purchase.py
+++ b/addons/purchase/models/purchase.py
@@ -453,6 +453,7 @@ class PurchaseOrder(models.Model):
result = action.read()[0]
#override the context to get rid of the default filtering on picking type
+ result.pop('id', None)
result['context'] = {}
pick_ids = sum([order.picking_ids.ids for order in self], [])
#choose the view_mode accordingly
diff --git a/addons/stock/models/stock_pack_operation.py b/addons/stock/models/stock_pack_operation.py
index 01a24de273d..609898a4380 100644
--- a/addons/stock/models/stock_pack_operation.py
+++ b/addons/stock/models/stock_pack_operation.py
@@ -34,8 +34,7 @@ class PackOperation(models.Model):
product_qty = fields.Float('To Do', default=0.0, digits=dp.get_precision('Product Unit of Measure'), required=True)
ordered_qty = fields.Float('Ordered Quantity', digits=dp.get_precision('Product Unit of Measure'))
qty_done = fields.Float('Done', default=0.0, digits=dp.get_precision('Product Unit of Measure'))
- # TDE FIXME: what what what what ??
- is_done = fields.Boolean(compute='_compute_is_done', inverse='_set_is_done', string='Done', oldname='processed_boolean')
+ is_done = fields.Boolean(compute='_compute_is_done', string='Done', readonly=False, oldname='processed_boolean')
package_id = fields.Many2one('stock.quant.package', 'Source Package')
pack_lot_ids = fields.One2many('stock.pack.operation.lot', 'operation_id', 'Lots/Serial Numbers Used')
result_package_id = fields.Many2one(
@@ -73,9 +72,8 @@ class PackOperation(models.Model):
def _compute_is_done(self):
self.is_done = self.qty_done > 0.0
- @api.one
- def _set_is_done(self):
- # TDE FIXME: whuuuut ???
+ @api.onchange('is_done')
+ def on_change_is_done(self):
if not self.product_id:
if self.is_done and self.qty_done == 0:
self.qty_done = 1.0
diff --git a/addons/stock/tests/test_stock_flow.py b/addons/stock/tests/test_stock_flow.py
index e0ddb97a84e..3ee20467a88 100644
--- a/addons/stock/tests/test_stock_flow.py
+++ b/addons/stock/tests/test_stock_flow.py
@@ -1366,7 +1366,8 @@ class TestStockFlow(TestStockCommon):
# set the pack in pack operation to 'done'
for pack in picking_pack.pack_operation_pack_ids:
- pack.qty_done = 1.0
+ pack.is_done = True
+ pack.on_change_is_done()
# Put in a pack
picking_pack.put_in_pack()
@@ -1384,7 +1385,8 @@ class TestStockFlow(TestStockCommon):
# set the pack in pack operation to 'done'
for pack in picking_out.pack_operation_pack_ids:
- pack.qty_done = 1.0
+ pack.is_done = True
+ pack.on_change_is_done()
# Validate picking
picking_out.do_new_transfer()
diff --git a/addons/web/static/src/js/views/list_view.js b/addons/web/static/src/js/views/list_view.js
index 4b5ea961589..83420da2ace 100644
--- a/addons/web/static/src/js/views/list_view.js
+++ b/addons/web/static/src/js/views/list_view.js
@@ -1499,7 +1499,7 @@ ListView.Groups = Class.extend({
// drag and drop enabled if list is not sorted (unless it is sorted by
// its sequence field (ASC)), and there is a visible column with
// @widget=handle or "sequence" column in the view.
- if ((dataset.sort && [seqname, seqname + 'ASC', ''].indexOf(dataset.sort()) === -1)
+ if ((dataset.sort && [seqname, seqname + ' ASC', ''].indexOf(dataset.sort()) === -1)
|| !_(this.columns).findWhere({'name': seqname})) {
return;
}