From 0a71d06be3909cfde8e3bd41752af2ba84dae023 Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Wed, 12 Mar 2014 14:22:13 +0100 Subject: [PATCH 01/27] [IMP] work in progress on stats buttons. The goal is to allow buttons with dynamic/statistical informations in form views (addon web) bzr revid: ged@openerp.com-20140312132213-hclaw6jc87u220zq --- addons/web/static/src/css/base.css | 17 ++++++++++++ addons/web/static/src/css/base.sass | 14 ++++++++++ addons/web/static/src/js/view_form.js | 37 +++++++++++++++++++++++++-- addons/web/static/src/xml/base.xml | 10 ++++++++ 4 files changed, 76 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index e43a2fb654e..263a867390e 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -462,6 +462,23 @@ .openerp .oe_button_box button { margin: 4px; } +.openerp .oe_button_box .oe_stat_button { + font-weight: normal; + display: inline-table; + width: 48% !important; + height: 45px; + margin: 1px; +} +.openerp .oe_button_box .oe_stat_button > div { + display: table-cell; + vertical-align: middle; + padding: 0; +} +.openerp .oe_button_box .oe_stat_button .stat_button_icon { + color: #7c7bad; + font-size: 24px; + padding: 4px; +} .openerp .oe_avatar > img { max-height: 90px; max-width: 90px; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index b19db9e4ebd..2d5ae82135e 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -433,6 +433,20 @@ $sheet-padding: 16px text-align: right button margin: 4px + .oe_stat_button + font-weight: normal + display: inline-table + width: 48% !important + height: 45px + margin: 1px + > div + display: table-cell + vertical-align: middle + padding: 0 + .stat_button_icon + color: #7C7BAD + font-size: 24px + padding: 4px .oe_avatar > img max-height: 90px diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index f1fc377fa94..a8973d760fa 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1218,6 +1218,9 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt $('button', doc).each(function() { $(this).attr('data-button-type', $(this).attr('type')).attr('type', 'button'); }); + $('statbutton', doc).each(function() { + $(this).attr('data-button-type', $(this).attr('type')).attr('type', 'button'); + }); // IE's html parser is also a css parser. How convenient... $('board', doc).each(function() { $(this).attr('layout', $(this).attr('style')); @@ -1277,6 +1280,9 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt var defs = []; _.each(this.to_replace, function(el) { defs.push(el[0].replace(el[1])); + if (el[1].children().length) { + el[0].$el.append(el[1].children()); + } }); this.to_replace = []; return $.when.apply($, defs); @@ -1304,7 +1310,7 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt var tagname = $tag[0].nodeName.toLowerCase(); if (this.tags_registry.contains(tagname)) { this.tags_to_init.push($tag); - return $tag; + return (tagname === 'statbutton') ? this.process_statbutton($tag) : $tag; } var fn = self['process_' + tagname]; if (fn) { @@ -1321,6 +1327,17 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt return $tag; } }, + process_statbutton: function ($button) { + var self = this; + console.log('yenrst'); + if ($button.children().length) { + $button.children().each(function() { + self.process($(this)); + }); + } + return $button; + }, + process_widget: function($widget) { this.widgets_to_init.push($widget); return $widget; @@ -1976,7 +1993,6 @@ instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({ var self = this; var context = this.build_context(); - return this.view.do_execute_action( _.extend({}, this.node.attrs, {context: context}), this.view.dataset, this.view.datarecord.id, function () { @@ -1990,6 +2006,22 @@ instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({ } }); +instance.web.form.StatButton = instance.web.form.WidgetButton.extend({ + template: 'StatButton', + + init: function(field_manager, node) { + var icon = node.attrs.icon; + this._super(field_manager, node); + + // debugger; + if (icon) { + this.icon = ""; + } + + }, + +}); + /** * Interface to be implemented by fields. * @@ -5899,6 +5931,7 @@ instance.web.form.widgets = new instance.web.Registry({ */ instance.web.form.tags = new instance.web.Registry({ 'button' : 'instance.web.form.WidgetButton', + 'statbutton' : 'instance.web.form.StatButton', }); instance.web.form.custom_widgets = new instance.web.Registry({ diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 80b82c1f40b..fa96fe1ac8a 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1360,6 +1360,16 @@ + + +
From ee478106748e52b314ac80a69d34a9b50cc29e4f Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Wed, 12 Mar 2014 14:45:38 +0100 Subject: [PATCH 02/27] [IMP] css tweaks to stat buttons bzr revid: ged@openerp.com-20140312134538-7b3o22lakb8qk45a --- addons/web/static/src/css/base.css | 3 ++- addons/web/static/src/css/base.sass | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 263a867390e..524bd79cc52 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -467,7 +467,8 @@ display: inline-table; width: 48% !important; height: 45px; - margin: 1px; + margin: 0px; + color: #666666; } .openerp .oe_button_box .oe_stat_button > div { display: table-cell; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 2d5ae82135e..f81232b7ee8 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -438,7 +438,8 @@ $sheet-padding: 16px display: inline-table width: 48% !important height: 45px - margin: 1px + margin: 0px + color: #666 > div display: table-cell vertical-align: middle From d2637811dec84306ab80cc49f40a8b823d7984a6 Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Thu, 13 Mar 2014 13:48:43 +0100 Subject: [PATCH 03/27] [IMP] adds PercentPie and X2Many widgets to formview. PercentPie takes a field 'float' and displays a read-only pie chart to visualize the corresponding percent. X2Many takes a 1tomany or a manytomany field and display a read only string '
- - - - + + + + + + @@ -1945,7 +1947,7 @@ - +
From af61fd53bc86583aca872d4d884e976fed885d30 Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Fri, 14 Mar 2014 15:21:55 +0100 Subject: [PATCH 07/27] [IMP] removes the tooltip when mouse hovers over a 'percentpie' widget (addon web) bzr revid: ged@openerp.com-20140314142155-u8suij5tikxwd0zi --- addons/web/static/src/js/view_form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index dcb15d3d16d..c4bddd90f34 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2837,6 +2837,7 @@ instance.web.form.FieldPercentPie = instance.web.form.AbstractField.extend({ .donut(true) .showLegend(false) .showLabels(false) + .tooltips(false) .color(['#7C7BAD','#DDD']) .donutRatio(0.62); From e8198d74b68c3f1fba677b596a2eedf60af8ad83 Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Mon, 17 Mar 2014 16:27:10 +0100 Subject: [PATCH 08/27] [IMP] various tweaks to stat_button, to fix issues mentioned in code review. This is mostly cosmetic cleanups, only notable change is that stat_button is now a proper html button instead of a label (addon web) bzr revid: ged@openerp.com-20140317152710-c33q8kua33o001la --- addons/web/static/src/css/base.css | 9 +++++--- addons/web/static/src/css/base.sass | 10 +++++---- addons/web/static/src/js/view_form.js | 16 ++++++-------- addons/web/static/src/xml/base.xml | 31 +++++++++------------------ 4 files changed, 28 insertions(+), 38 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 0b432d0c145..1d843e7e250 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -460,6 +460,9 @@ width: 400px; text-align: left; } +.openerp .oe_button_box .oe_stat_button:hover { + background: #dddddd; +} .openerp .oe_button_box .oe_stat_button { font-weight: normal; display: inline-table; @@ -467,7 +470,8 @@ height: 45px; margin: 0px -1px -1px 0px; color: #666666; - border-color: #dddddd; + border: 1px solid #666666; + background: white; } .openerp .oe_button_box .oe_stat_button > div { display: table-cell; @@ -478,9 +482,8 @@ .openerp .oe_button_box .oe_stat_button .stat_button_icon { color: #7c7bad; font-size: 24px; - padding: 0px; + padding: 0px 3px; text-align: center; - width: 40px; } .openerp .oe_button_box .oe_stat_button svg { width: 38px; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 336f583e019..cca0deb4a1f 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -432,6 +432,8 @@ $sheet-padding: 16px .oe_button_box width: 400px text-align: left + .oe_stat_button:hover + background: #ddd .oe_stat_button font-weight: normal display: inline-table @@ -439,18 +441,18 @@ $sheet-padding: 16px height: 45px margin: 0px -1px -1px 0px color: #666 - border-color: #ddd + border: 1px solid #666 + background: white > div display: table-cell vertical-align: middle text-align: left - padding: 0 + padding: 0 .stat_button_icon color: #7C7BAD font-size: 24px - padding: 0px + padding: 0px 3px text-align: center - width: 40px svg width: 38px height: 38px diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index c4bddd90f34..969e0150737 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1916,8 +1916,8 @@ instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({ template: 'WidgetButton', init: function(field_manager, node) { node.attrs.type = node.attrs['data-button-type']; - this.is_stat_button = node.attrs.class ? _.include(node.attrs.class.split(' '), 'oe_stat_button') : false; - this.icon = ""; + this.is_stat_button = /\boe_stat_button\b/.test(node.attrs['class']); + this.icon = node.attrs.icon && ""; this._super(field_manager, node); this.force_disabled = false; this.string = (this.node.attrs.string || '').replace(/_/g, ''); @@ -2845,16 +2845,12 @@ instance.web.form.FieldPercentPie = instance.web.form.AbstractField.extend({ .datum([{'x': 'value', 'y': value}, {'x': 'complement', 'y': 100 - value}]) .transition() .call(chart) - .attr('width', size) - .attr('height',size); + .attr({width:size, height:size}); d3.select(svg) .append("text") - .attr("x", size/2) - .attr("y", size/2 + 3) - .style("font-size", "10px") - .style("font-weight", "bold") - .attr("text-anchor", "middle") + .attr({x: size/2, y: size/2 + 3, 'text-anchor': 'middle'}) + .style({"font-size": "10px", "font-weight": "bold"}) .text(formatted_value); return chart; @@ -5923,7 +5919,7 @@ instance.web.form.StatInfo = instance.web.form.AbstractField.extend({ }, render_value: function() { var text = _.str.sprintf("%d %s", this.get("value") || 0, this.string); - this.$().html(QWeb.render("StatInfo", {text: text})); + this.$el.html(QWeb.render("StatInfo", {text: text})); }, }); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index b24bd8642cc..cc56dc2de13 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1189,7 +1189,7 @@
- + @@ -1356,26 +1356,15 @@
- - - - - - + From 373cb908caf5792367e49050e3d4ae086a097d0c Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Tue, 18 Mar 2014 09:55:25 +0100 Subject: [PATCH 09/27] [FIX] correctly handle the case where a 'stat button' has a string attribute (it needs to be displayed in a div instead of a span) (addon web) bzr revid: ged@openerp.com-20140318085525-vllzeycht9841g41 --- addons/web/static/src/xml/base.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index cc56dc2de13..508c507d935 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1362,11 +1362,11 @@ t-att-autofocus="widget.node.attrs.autofocus" t-att-accesskey="widget.node.attrs.accesskey"> -
- +
+ +
-
- +
From f4cfed3f0e89f8841b16ad578dd2c360f01d18ec Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Wed, 19 Mar 2014 09:57:18 +0100 Subject: [PATCH 10/27] [IMP] improves the look of the stat buttons in form view: the statinfo widget displays the information on two lines, the padding/margin/width have been adjusted. (addon web) bzr revid: ged@openerp.com-20140319085718-9v1l3pb43ee6qws6 --- addons/web/static/src/css/base.css | 14 +++++++++++--- addons/web/static/src/css/base.sass | 13 ++++++++++--- addons/web/static/src/js/view_form.js | 9 ++++++--- addons/web/static/src/xml/base.xml | 5 ++--- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 1d843e7e250..53043f2f4c5 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -461,16 +461,22 @@ text-align: left; } .openerp .oe_button_box .oe_stat_button:hover { - background: #dddddd; + background: #7c7bad; + color: white; +} +.openerp .oe_button_box .oe_stat_button:hover .fa { + color: white; } .openerp .oe_button_box .oe_stat_button { font-weight: normal; display: inline-table; width: 33% !important; - height: 45px; + height: 42px; margin: 0px -1px -1px 0px; + padding: 0; color: #666666; - border: 1px solid #666666; + border: 1px solid #dddddd; + border-radius: 0; background: white; } .openerp .oe_button_box .oe_stat_button > div { @@ -478,11 +484,13 @@ vertical-align: middle; text-align: left; padding: 0; + line-height: 120%; } .openerp .oe_button_box .oe_stat_button .stat_button_icon { color: #7c7bad; font-size: 24px; padding: 0px 3px; + width: 37px; text-align: center; } .openerp .oe_button_box .oe_stat_button svg { diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index cca0deb4a1f..466f60fa861 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -433,25 +433,32 @@ $sheet-padding: 16px width: 400px text-align: left .oe_stat_button:hover - background: #ddd + background: #7c7bad + color: white + .fa + color: white .oe_stat_button font-weight: normal display: inline-table width: 33% !important - height: 45px + height: 42px margin: 0px -1px -1px 0px + padding: 0 color: #666 - border: 1px solid #666 + border: 1px solid #dddddd + border-radius: 0 background: white > div display: table-cell vertical-align: middle text-align: left padding: 0 + line-height: 120% .stat_button_icon color: #7C7BAD font-size: 24px padding: 0px 3px + width: 37px text-align: center svg width: 38px diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 969e0150737..5840d718bf8 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1917,7 +1917,7 @@ instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({ init: function(field_manager, node) { node.attrs.type = node.attrs['data-button-type']; this.is_stat_button = /\boe_stat_button\b/.test(node.attrs['class']); - this.icon = node.attrs.icon && ""; + this.icon = node.attrs.icon && ""; this._super(field_manager, node); this.force_disabled = false; this.string = (this.node.attrs.string || '').replace(/_/g, ''); @@ -5918,8 +5918,11 @@ instance.web.form.StatInfo = instance.web.form.AbstractField.extend({ this.set("value", 0); }, render_value: function() { - var text = _.str.sprintf("%d %s", this.get("value") || 0, this.string); - this.$el.html(QWeb.render("StatInfo", {text: text})); + var options = { + value: this.get("value") || 0, + text: this.string, + }; + this.$el.html(QWeb.render("StatInfo", options)); }, }); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 508c507d935..e35d0c977b3 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1362,7 +1362,7 @@ t-att-autofocus="widget.node.attrs.autofocus" t-att-accesskey="widget.node.attrs.accesskey"> -
+
@@ -1937,6 +1937,5 @@
-
-
+
From 38ae695d00e5afe95da7220e0029c53ed0cda510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 19 Mar 2014 15:46:08 +0100 Subject: [PATCH 11/27] [IMP] payment modules: added provider selection field that is different from the name. This allows to distinguish name and provider. Provider is a more technical field, used to call some specific methods (_method_name). The name field is used for display on the website. Code and views udpated accordingly. bzr revid: tde@openerp.com-20140319144608-0i4rv520l0bh53f0 --- addons/payment/models/payment_acquirer.py | 33 +++++++++++-------- addons/payment/views/payment_acquirer.xml | 6 ++++ addons/payment_adyen/data/adyen.xml | 3 +- addons/payment_adyen/models/adyen.py | 18 +++++----- .../payment_adyen/views/payment_acquirer.xml | 2 +- addons/payment_ogone/data/ogone.xml | 3 +- addons/payment_ogone/models/ogone.py | 7 +++- .../payment_ogone/views/payment_acquirer.xml | 2 +- addons/payment_paypal/data/paypal.xml | 3 +- addons/payment_paypal/models/paypal.py | 5 +++ .../payment_paypal/views/payment_acquirer.xml | 2 +- addons/payment_transfer/data/transfer.xml | 3 +- .../models/payment_acquirer.py | 5 +++ addons/website_sale/views/website_sale.xml | 2 +- 14 files changed, 63 insertions(+), 31 deletions(-) diff --git a/addons/payment/models/payment_acquirer.py b/addons/payment/models/payment_acquirer.py index 9ad77b3c4cf..464cb0c8f5c 100644 --- a/addons/payment/models/payment_acquirer.py +++ b/addons/payment/models/payment_acquirer.py @@ -52,8 +52,15 @@ class PaymentAcquirer(osv.Model): _name = 'payment.acquirer' _description = 'Payment Acquirer' + def _get_providers(self, cr, uid, context=None): + return [] + + # indirection to ease inheritance + _provider_selection = lambda self, *args, **kwargs: self._get_providers(*args, **kwargs) + _columns = { 'name': fields.char('Name', required=True), + 'provider': fields.selection(_provider_selection, string='Provider', required=True), 'company_id': fields.many2one('res.company', 'Company', required=True), 'pre_msg': fields.html('Message', help='Message displayed to explain and help the payment process.'), 'post_msg': fields.html('Thanks Message', help='Message displayed after having done the payment process.'), @@ -84,10 +91,10 @@ class PaymentAcquirer(osv.Model): } def _check_required_if_provider(self, cr, uid, ids, context=None): - """ If the field has 'required_if_provider=""' attribute, then it - required if record.name is . """ + """ If the field has 'required_if_provider=""' attribute, then it + required if record.provider is . """ for acquirer in self.browse(cr, uid, ids, context=context): - if any(c for c, f in self._all_columns.items() if getattr(f.column, 'required_if_provider', None) == acquirer.name and not acquirer[c]): + if any(c for c, f in self._all_columns.items() if getattr(f.column, 'required_if_provider', None) == acquirer.provider and not acquirer[c]): return False return True @@ -98,8 +105,8 @@ class PaymentAcquirer(osv.Model): def get_form_action_url(self, cr, uid, id, context=None): """ Returns the form action URL, for form-based acquirer implementations. """ acquirer = self.browse(cr, uid, id, context=context) - if hasattr(self, '%s_get_form_action_url' % acquirer.name): - return getattr(self, '%s_get_form_action_url' % acquirer.name)(cr, uid, id, context=context) + if hasattr(self, '%s_get_form_action_url' % acquirer.provider): + return getattr(self, '%s_get_form_action_url' % acquirer.provider)(cr, uid, id, context=context) return False def form_preprocess_values(self, cr, uid, id, reference, amount, currency_id, tx_id, partner_id, partner_values, tx_values, context=None): @@ -178,7 +185,7 @@ class PaymentAcquirer(osv.Model): }) # compute fees - fees_method_name = '%s_compute_fees' % acquirer.name + fees_method_name = '%s_compute_fees' % acquirer.provider if hasattr(self, fees_method_name): fees = getattr(self, fees_method_name)( cr, uid, id, tx_data['amount'], tx_data['currency_id'], partner_data['country_id'], context=None) @@ -237,7 +244,7 @@ class PaymentAcquirer(osv.Model): partner_values, tx_values, context=context) # call _form_generate_values to update the tx dict with acqurier specific values - cust_method_name = '%s_form_generate_values' % (acquirer.name) + cust_method_name = '%s_form_generate_values' % (acquirer.provider) if hasattr(self, cust_method_name): method = getattr(self, cust_method_name) partner_values, tx_values = method(cr, uid, id, partner_values, tx_values, context=context) @@ -383,14 +390,14 @@ class PaymentTransaction(osv.Model): acquirer = self.pool['payment.acquirer'].browse(cr, uid, values.get('acquirer_id'), context=context) # compute fees - custom_method_name = '%s_compute_fees' % acquirer.name + custom_method_name = '%s_compute_fees' % acquirer.provider if hasattr(Acquirer, custom_method_name): fees = getattr(Acquirer, custom_method_name)( cr, uid, acquirer.id, values.get('amount', 0.0), values.get('currency_id'), values.get('country_id'), context=None) values['fees'] = float_round(fees, 2) # custom create - custom_method_name = '%s_create' % acquirer.name + custom_method_name = '%s_create' % acquirer.provider if hasattr(self, custom_method_name): values.update(getattr(self, custom_method_name)(cr, uid, values, context=context)) @@ -469,7 +476,7 @@ class PaymentTransaction(osv.Model): if values.get('acquirer_id'): acquirer = self.pool['payment.acquirer'].browse(cr, uid, values.get('acquirer_id'), context=context) - custom_method_name = '_%s_s2s_send' % acquirer.name + custom_method_name = '_%s_s2s_send' % acquirer.provider if hasattr(self, custom_method_name): tx_id, result = getattr(self, custom_method_name)(cr, uid, values, cc_values, context=context) @@ -482,7 +489,7 @@ class PaymentTransaction(osv.Model): tx = self.browse(cr, uid, tx_id, context=context) invalid_parameters = None - invalid_param_method_name = '_%s_s2s_get_invalid_parameters' % tx.acquirer_id.name + invalid_param_method_name = '_%s_s2s_get_invalid_parameters' % tx.acquirer_id.provider if hasattr(self, invalid_param_method_name): invalid_parameters = getattr(self, invalid_param_method_name)(cr, uid, tx, data, context=context) @@ -493,7 +500,7 @@ class PaymentTransaction(osv.Model): _logger.error(_error_message) return False - feedback_method_name = '_%s_s2s_validate' % tx.acquirer_id.name + feedback_method_name = '_%s_s2s_validate' % tx.acquirer_id.provider if hasattr(self, feedback_method_name): return getattr(self, feedback_method_name)(cr, uid, tx, data, context=context) @@ -503,7 +510,7 @@ class PaymentTransaction(osv.Model): """ Get the tx status. """ tx = self.browse(cr, uid, tx_id, context=context) - invalid_param_method_name = '_%s_s2s_get_tx_status' % tx.acquirer_id.name + invalid_param_method_name = '_%s_s2s_get_tx_status' % tx.acquirer_id.provider if hasattr(self, invalid_param_method_name): return getattr(self, invalid_param_method_name)(cr, uid, tx, context=context) diff --git a/addons/payment/views/payment_acquirer.xml b/addons/payment/views/payment_acquirer.xml index 5dbd748bda7..e2e0644480d 100644 --- a/addons/payment/views/payment_acquirer.xml +++ b/addons/payment/views/payment_acquirer.xml @@ -16,6 +16,7 @@ + @@ -66,6 +67,7 @@ + @@ -77,6 +79,10 @@ + + + + diff --git a/addons/payment_adyen/data/adyen.xml b/addons/payment_adyen/data/adyen.xml index 8f6e7e218e4..5ca0f4d71e9 100644 --- a/addons/payment_adyen/data/adyen.xml +++ b/addons/payment_adyen/data/adyen.xml @@ -3,7 +3,8 @@ - adyen + Adyen + adyen test diff --git a/addons/payment_adyen/models/adyen.py b/addons/payment_adyen/models/adyen.py index 80103f50dae..607d65738c5 100644 --- a/addons/payment_adyen/models/adyen.py +++ b/addons/payment_adyen/models/adyen.py @@ -26,14 +26,14 @@ class AcquirerAdyen(osv.Model): - yhpp: hosted payment page: pay.shtml for single, select.shtml for multiple """ - if env == 'prod': - return { - 'adyen_form_url': 'https://prod.adyen.com/hpp/pay.shtml', - } - else: - return { - 'adyen_form_url': 'https://test.adyen.com/hpp/pay.shtml', - } + return { + 'adyen_form_url': 'https://%s.adyen.com/hpp/pay.shtml' % env, + } + + def _get_providers(self, cr, uid, context=None): + providers = super(AcquirerAdyen, self)._get_providers(cr, uid, context=context) + providers.append(['adyen', 'Adyen']) + return providers _columns = { 'adyen_merchant_account': fields.char('Merchant Account', required_if_provider='adyen'), @@ -54,7 +54,7 @@ class AcquirerAdyen(osv.Model): :return string: shasign """ assert inout in ('in', 'out') - assert acquirer.name == 'adyen' + assert acquirer.provider == 'adyen' if inout == 'in': keys = "paymentAmount currencyCode shipBeforeDate merchantReference skinCode merchantAccount sessionValidity shopperEmail shopperReference recurringContract allowedMethods blockedMethods shopperStatement merchantReturnData billingAddressType deliveryAddressType offset".split() diff --git a/addons/payment_adyen/views/payment_acquirer.xml b/addons/payment_adyen/views/payment_acquirer.xml index 1510a110c43..396bf9c32d5 100644 --- a/addons/payment_adyen/views/payment_acquirer.xml +++ b/addons/payment_adyen/views/payment_acquirer.xml @@ -8,7 +8,7 @@ - + diff --git a/addons/payment_ogone/data/ogone.xml b/addons/payment_ogone/data/ogone.xml index e94276ba3e1..ade39cfb79c 100644 --- a/addons/payment_ogone/data/ogone.xml +++ b/addons/payment_ogone/data/ogone.xml @@ -3,7 +3,8 @@ - ogone + Credit Card + ogone test diff --git a/addons/payment_ogone/models/ogone.py b/addons/payment_ogone/models/ogone.py index 2ae9722b655..f6cab44f0b5 100644 --- a/addons/payment_ogone/models/ogone.py +++ b/addons/payment_ogone/models/ogone.py @@ -36,6 +36,11 @@ class PaymentAcquirerOgone(osv.Model): 'ogone_afu_agree_url': 'https://secure.ogone.com/ncol/%s/AFU_agree.asp' % (env,), } + def _get_providers(self, cr, uid, context=None): + providers = super(PaymentAcquirerOgone, self)._get_providers(cr, uid, context=context) + providers.append(['ogone', 'Ogone']) + return providers + _columns = { 'ogone_pspid': fields.char('PSPID', required_if_provider='ogone'), 'ogone_userid': fields.char('API User ID', required_if_provider='ogone'), @@ -57,7 +62,7 @@ class PaymentAcquirerOgone(osv.Model): :return string: shasign """ assert inout in ('in', 'out') - assert acquirer.name == 'ogone' + assert acquirer.provider == 'ogone' key = getattr(acquirer, 'ogone_shakey_' + inout) def filter_key(key): diff --git a/addons/payment_ogone/views/payment_acquirer.xml b/addons/payment_ogone/views/payment_acquirer.xml index accce4d70d2..f297eb9431a 100644 --- a/addons/payment_ogone/views/payment_acquirer.xml +++ b/addons/payment_ogone/views/payment_acquirer.xml @@ -8,7 +8,7 @@ - + diff --git a/addons/payment_paypal/data/paypal.xml b/addons/payment_paypal/data/paypal.xml index fe28ed30331..0ea6cd5a848 100644 --- a/addons/payment_paypal/data/paypal.xml +++ b/addons/payment_paypal/data/paypal.xml @@ -3,7 +3,8 @@ - paypal + Paypal + paypal test diff --git a/addons/payment_paypal/models/paypal.py b/addons/payment_paypal/models/paypal.py index a5e31e9571c..de852702880 100644 --- a/addons/payment_paypal/models/paypal.py +++ b/addons/payment_paypal/models/paypal.py @@ -34,6 +34,11 @@ class AcquirerPaypal(osv.Model): 'paypal_rest_url': 'https://api.sandbox.paypal.com/v1/oauth2/token', } + def _get_providers(self, cr, uid, context=None): + providers = super(AcquirerPaypal, self)._get_providers(cr, uid, context=context) + providers.append(['paypal', 'Paypal']) + return providers + _columns = { 'paypal_email_account': fields.char('Paypal Email ID', required_if_provider='paypal'), 'paypal_seller_account': fields.char( diff --git a/addons/payment_paypal/views/payment_acquirer.xml b/addons/payment_paypal/views/payment_acquirer.xml index 835d96f42e9..3fb5db184f6 100644 --- a/addons/payment_paypal/views/payment_acquirer.xml +++ b/addons/payment_paypal/views/payment_acquirer.xml @@ -8,7 +8,7 @@ - + diff --git a/addons/payment_transfer/data/transfer.xml b/addons/payment_transfer/data/transfer.xml index c2863971d34..d67e07bdfef 100644 --- a/addons/payment_transfer/data/transfer.xml +++ b/addons/payment_transfer/data/transfer.xml @@ -3,7 +3,8 @@ - transfer + Transfer + transfer manual diff --git a/addons/payment_transfer/models/payment_acquirer.py b/addons/payment_transfer/models/payment_acquirer.py index 90b1329ff25..b8c3d023674 100644 --- a/addons/payment_transfer/models/payment_acquirer.py +++ b/addons/payment_transfer/models/payment_acquirer.py @@ -14,6 +14,11 @@ _logger = logging.getLogger(__name__) class TransferPaymentAcquirer(osv.Model): _inherit = 'payment.acquirer' + def _get_providers(self, cr, uid, context=None): + providers = super(TransferPaymentAcquirer, self)._get_providers(cr, uid, context=context) + providers.append(['transfer', 'Transfer']) + return providers + def transfer_get_form_action_url(self, cr, uid, id, context=None): return '/payment/transfer/feedback' diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index b870a676cc9..cfd8a131fb7 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -956,7 +956,7 @@ + t-att-src="'/payment_%s/static/src/img/%s_icon.png' % (acquirer.provider, acquirer.provider)"/> From 3a0fb1803547c081e90b44bbe4b8e78a32aa3d23 Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Thu, 20 Mar 2014 09:21:29 +0100 Subject: [PATCH 12/27] [IMP] removes the shadow in stat buttons, to give them the 'flat' look (addon web) bzr revid: ged@openerp.com-20140320082129-o9jrdb962uuso4kb --- addons/web/static/src/css/base.css | 3 ++- addons/web/static/src/css/base.sass | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 0bf5a2d437e..66bfaca7c6e 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,4 +1,4 @@ -@charset "utf-8"; +@charset "UTF-8"; @font-face { font-family: "mnmliconsRegular"; src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); @@ -477,6 +477,7 @@ color: #666666; border: 1px solid #dddddd; border-radius: 0; + box-shadow: none; background: white; } .openerp .oe_button_box .oe_stat_button > div { diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index e6749747021..7110349557a 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -447,6 +447,7 @@ $sheet-padding: 16px color: #666 border: 1px solid #dddddd border-radius: 0 + box-shadow: none background: white > div display: table-cell From 4afeee59d10485b84740faf4182678a733f24b03 Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Wed, 2 Apr 2014 10:37:17 +0200 Subject: [PATCH 13/27] [FIX] fixes an alignment issue in the template definitions (addon web) bzr revid: ged@openerp.com-20140402083717-y3p22u2e47d60bbt --- addons/web/static/src/xml/base.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 1a5721d28f8..23cad2098dc 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1373,7 +1373,8 @@
- + +
From 9588999c7c45cbaabb0dce9b31857eb779928905 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Thu, 3 Apr 2014 09:25:48 +0200 Subject: [PATCH 14/27] [IMP] Tracks: alphabetic order bzr revid: fp@tinyerp.com-20140403072548-y4823lyjuovl5neu --- addons/website_event_track/models/event.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py index bb7c8db17d9..716aac6bff4 100644 --- a/addons/website_event_track/models/event.py +++ b/addons/website_event_track/models/event.py @@ -25,12 +25,14 @@ from openerp.addons.website.models.website import slug class event_track_tag(osv.osv): _name = "event.track.tag" + _order = 'name' _columns = { 'name': fields.char('Event Track Tag') } class event_tag(osv.osv): _name = "event.tag" + _order = 'name' _columns = { 'name': fields.char('Event Tag') } From 438025dac803afc3adeb8ef7f561b2b78e027bb1 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 3 Apr 2014 14:31:44 +0200 Subject: [PATCH 15/27] [FIX] setup.py: correct included packages in py2exe options bzr revid: nightly_server-20140403123144-pm4dqs04dbfmv1p8 --- setup.py | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 545b02e9bbd..214002d6f44 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ def data(): # but this will work fine (especially since we don't use the ZIP file # approach). r["babel/localedata"] = glob.glob(os.path.join(os.path.dirname(babel.__file__), "localedata", '*')) - others = ['global.dat', 'numbers.py', 'support.py'] + others = ['global.dat', 'numbers.py', 'support.py', 'plural.py'] r["babel"] = map(lambda f: os.path.join(os.path.dirname(babel.__file__), f), others) others = ['frontend.py', 'mofile.py'] r["babel/messages"] = map(lambda f: os.path.join(os.path.dirname(babel.__file__), "messages", f), others) @@ -75,7 +75,42 @@ def py2exe_options(): "skip_archive": 1, "optimize": 0, # keep the assert running, because the integrated tests rely on them. "dist_dir": 'dist', - "packages": ["HTMLParser", "PIL", "asynchat", "asyncore", "commands", "dateutil", "decimal", "docutils", "email", "encodings", "imaplib", "jinja2", "lxml", "lxml._elementpath", "lxml.builder", "lxml.etree", "lxml.objectify", "mako", "openerp", "poplib", "pychart", "pydot", "pyparsing", "pytz", "reportlab", "select", "simplejson", "smtplib", "uuid", "vatnumber", "vobject", "xml", "xml.dom", "yaml", ], + "packages": [ + "HTMLParser", + "PIL", + "asynchat", "asyncore", + "commands", + "dateutil", + "decimal", + "docutils", + "email", + "encodings", + "imaplib", + "jinja2", + "lxml", "lxml._elementpath", "lxml.builder", "lxml.etree", "lxml.objectify", + "mako", + "markupsafe", # dependence of jinja2 and mako + "mock", + "openerp", + "poplib", + "psutil", + "pychart", + "pydot", + "pyparsing", + "pytz", + "reportlab", + "requests", + "select", + "simplejson", + "smtplib", + "uuid", + "vatnumber", + "vobject", + "win32service", "win32serviceutil", + "xlwt", + "xml", "xml.dom", + "yaml", + ], "excludes" : ["Tkconstants","Tkinter","tcl"], } } @@ -151,7 +186,7 @@ setuptools.setup( extras_require = { 'SSL' : ['pyopenssl'], }, - tests_require = ['unittest2'], + tests_require = ['unittest2', 'mock'], **py2exe_options() ) From 7c29e3847cd596d8befcc8d1169678beb8c41177 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 3 Apr 2014 15:41:09 +0200 Subject: [PATCH 16/27] [FIX] increase js test timeout to 60 when runbot is overloaded, test speed can be slow, 2s per HTTP request bzr revid: al@openerp.com-20140403134109-nzg71xmybw1p5bsi --- openerp/tests/common.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/tests/common.py b/openerp/tests/common.py index a53a8d82240..c1f7cf88ed1 100644 --- a/openerp/tests/common.py +++ b/openerp/tests/common.py @@ -255,7 +255,7 @@ class HttpCase(TransactionCase): phantom.terminate() _logger.info("phantom_run execution finished") - def phantom_jsfile(self, jsfile, timeout=30, **kw): + def phantom_jsfile(self, jsfile, timeout=60, **kw): options = { 'timeout' : timeout, 'port': PORT, @@ -269,7 +269,7 @@ class HttpCase(TransactionCase): cmd = ['phantomjs', jsfile, phantomtest, json.dumps(options)] self.phantom_run(cmd, timeout) - def phantom_js(self, url_path, code, ready="window", login=None, timeout=30, **kw): + def phantom_js(self, url_path, code, ready="window", login=None, timeout=60, **kw): """ Test js code running in the browser - optionnally log as 'login' - load page given by url_path From 0e7d514a3ec3cd15799c8a0b430cbdce74d60394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:44:20 +0200 Subject: [PATCH 17/27] [ADD] website_sale: added inherit of the transaction form view to display the sale_order_id field. bzr revid: tde@openerp.com-20140404084420-hhe0yd9npf8vox5h --- addons/website_sale/__openerp__.py | 1 + addons/website_sale/views/payment.xml | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 addons/website_sale/views/payment.xml diff --git a/addons/website_sale/__openerp__.py b/addons/website_sale/__openerp__.py index 121bb519103..e9ab1820804 100644 --- a/addons/website_sale/__openerp__.py +++ b/addons/website_sale/__openerp__.py @@ -14,6 +14,7 @@ OpenERP E-Commerce 'data/website_sale_data.xml', 'views/website_sale.xml', 'views/website_sale_backend.xml', + 'views/payment.xml', 'security/ir.model.access.csv', 'security/website_sale.xml', ], diff --git a/addons/website_sale/views/payment.xml b/addons/website_sale/views/payment.xml new file mode 100644 index 00000000000..f4bec2323bb --- /dev/null +++ b/addons/website_sale/views/payment.xml @@ -0,0 +1,17 @@ + + + + + + payment.transaction.form.website_sale + payment.transaction + + + + + + + + + + From e68627c4b76871a60d9a65bc0641b7d74f181f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:44:41 +0200 Subject: [PATCH 18/27] [IMP] payment: added name on transaction views bzr revid: tde@openerp.com-20140404084441-ctto8puzy6otopst --- addons/payment/views/payment_acquirer.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/payment/views/payment_acquirer.xml b/addons/payment/views/payment_acquirer.xml index e2e0644480d..325bb774ee6 100644 --- a/addons/payment/views/payment_acquirer.xml +++ b/addons/payment/views/payment_acquirer.xml @@ -8,7 +8,7 @@ parent='base.menu_administration'/> - acquirer.form + payment.acquirer.form payment.acquirer
@@ -63,6 +63,7 @@ + payment.acquirer.list payment.acquirer @@ -75,6 +76,7 @@ + payment.acquirer.search payment.acquirer @@ -101,6 +103,7 @@ sequence='10' /> + payment.transaction.form payment.transaction @@ -144,6 +147,7 @@ + payment.transaction.list payment.transaction @@ -157,6 +161,7 @@ + payment.transaction.search payment.transaction From 7e9307e4d87ad77ee61dff98b4ac4892abb0d1e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:45:28 +0200 Subject: [PATCH 19/27] [IMP] payment_transfer: Transfer -> Wire Transfer + updated test bzr revid: tde@openerp.com-20140404084528-sfdeyj7sl6dq4tm1 --- addons/payment_transfer/data/transfer.xml | 2 +- addons/payment_transfer/models/payment_acquirer.py | 2 +- addons/website_sale/static/src/js/website.tour.sale.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/payment_transfer/data/transfer.xml b/addons/payment_transfer/data/transfer.xml index d67e07bdfef..5eabe29a17f 100644 --- a/addons/payment_transfer/data/transfer.xml +++ b/addons/payment_transfer/data/transfer.xml @@ -3,7 +3,7 @@ - Transfer + Wire Transfer transfer diff --git a/addons/payment_transfer/models/payment_acquirer.py b/addons/payment_transfer/models/payment_acquirer.py index b8c3d023674..63883b3df30 100644 --- a/addons/payment_transfer/models/payment_acquirer.py +++ b/addons/payment_transfer/models/payment_acquirer.py @@ -16,7 +16,7 @@ class TransferPaymentAcquirer(osv.Model): def _get_providers(self, cr, uid, context=None): providers = super(TransferPaymentAcquirer, self)._get_providers(cr, uid, context=context) - providers.append(['transfer', 'Transfer']) + providers.append(['transfer', 'Wire Transfer']) return providers def transfer_get_form_action_url(self, cr, uid, id, context=None): diff --git a/addons/website_sale/static/src/js/website.tour.sale.js b/addons/website_sale/static/src/js/website.tour.sale.js index c9dd7e5e301..d76d1c98e61 100644 --- a/addons/website_sale/static/src/js/website.tour.sale.js +++ b/addons/website_sale/static/src/js/website.tour.sale.js @@ -73,7 +73,7 @@ }, { title: "select payment", - element: '#payment_method label:has(img[title="transfer"]) input', + element: '#payment_method label:has(img[title="Transfer"]) input', }, { title: "Pay Now", From f0bc588710b7b35690e09cbb232c12b134fb8eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:50:12 +0200 Subject: [PATCH 20/27] [FIX] website_sale: fixed tour bzr revid: tde@openerp.com-20140404085012-2h658158mm4ydkpq --- addons/website_sale/static/src/js/website.tour.sale.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale/static/src/js/website.tour.sale.js b/addons/website_sale/static/src/js/website.tour.sale.js index d76d1c98e61..0d72a0633c5 100644 --- a/addons/website_sale/static/src/js/website.tour.sale.js +++ b/addons/website_sale/static/src/js/website.tour.sale.js @@ -73,7 +73,7 @@ }, { title: "select payment", - element: '#payment_method label:has(img[title="Transfer"]) input', + element: '#payment_method label:has(img[title="Wire Transfer"]) input', }, { title: "Pay Now", From b6c578d54ec73ea82fbad0e4ff0266f34f65589d Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 4 Apr 2014 10:55:04 +0200 Subject: [PATCH 21/27] [IMP] web_graph: when exporting to xls, export float data as raw instead of string lp bug: https://launchpad.net/bugs/1279803 fixed bzr revid: mat@openerp.com-20140404085504-t9np8xok33rb0mow --- addons/web_graph/static/src/js/graph_widget.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/web_graph/static/src/js/graph_widget.js b/addons/web_graph/static/src/js/graph_widget.js index 3f6acdf87a7..bb87e172718 100644 --- a/addons/web_graph/static/src/js/graph_widget.js +++ b/addons/web_graph/static/src/js/graph_widget.js @@ -381,11 +381,11 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({ // Convert Pivot data structure into table structure : // compute rows, cols, colors, cell width, cell height, ... // ---------------------------------------------------------------------- - build_table: function() { + build_table: function(raw) { return { headers: this.build_headers(), measure_row: this.build_measure_row(), - rows: this.build_rows(), + rows: this.build_rows(raw), nbr_measures: this.pivot.measures.length, title: this.title, }; @@ -435,8 +435,8 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({ return result; }, - make_cell: function (row, col, value, index) { - var formatted_value = openerp.web.format_value(value, {type:this.pivot.measures[index].type}), + make_cell: function (row, col, value, index, raw) { + var formatted_value = raw ? value : openerp.web.format_value(value, {type:this.pivot.measures[index].type}), cell = {value:formatted_value}; if (this.heatmap_mode === 'none') { return cell; } @@ -450,7 +450,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({ return cell; }, - build_rows: function () { + build_rows: function (raw) { var self = this, pivot = this.pivot, m, cell; @@ -460,13 +460,13 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({ _.each(pivot.get_cols_leaves(), function (col) { var values = pivot.get_values(row.id,col.id); for (m = 0; m < pivot.measures.length; m++) { - cells.push(self.make_cell(row,col,values[m], m)); + cells.push(self.make_cell(row,col,values[m], m, raw)); } }); if (pivot.get_cols_leaves().length > 1) { var totals = pivot.get_total(row); for (m = 0; m < pivot.measures.length; m++) { - cell = self.make_cell(row, pivot.main_col(), totals[m], m); + cell = self.make_cell(row, pivot.main_col(), totals[m], m, raw); cell.is_bold = 'true'; cells.push(cell); } @@ -743,7 +743,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({ openerp.web.blockUI(); this.session.get_file({ url: '/web_graph/export_xls', - data: {data: JSON.stringify(this.build_table())}, + data: {data: JSON.stringify(this.build_table(true))}, complete: openerp.web.unblockUI, error: c.rpc_error.bind(c) }); From a06d9099ea07636fa838ceaf7e28415c67666ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 11:49:55 +0200 Subject: [PATCH 22/27] [FIX] website_sale: fixed stupid test usign a title bzr revid: tde@openerp.com-20140404094955-51zhadhaavpjvkzl --- addons/website_sale/static/src/js/website.tour.sale.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale/static/src/js/website.tour.sale.js b/addons/website_sale/static/src/js/website.tour.sale.js index 0d72a0633c5..0fa01addede 100644 --- a/addons/website_sale/static/src/js/website.tour.sale.js +++ b/addons/website_sale/static/src/js/website.tour.sale.js @@ -77,7 +77,7 @@ }, { title: "Pay Now", - waitFor: '#payment_method label:has(input:checked):has(img[title="transfer"])', + waitFor: '#payment_method label:has(input:checked):has(img[title="Wire Transfer"])', element: '.oe_sale_acquirer_button .btn[name="submit"]:visible', }, { From eb1274f6129253d60c1ea61a0cf32088f7b77d29 Mon Sep 17 00:00:00 2001 From: Anael Closson Date: Fri, 4 Apr 2014 12:09:56 +0200 Subject: [PATCH 23/27] [IMP] event: performance improvement for event with large amount of registration. lp bug: https://launchpad.net/bugs/1294607 fixed bzr revid: acl@openerp.com-20140404100956-epbv1o3fq63l1n5f --- addons/event/event.py | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/addons/event/event.py b/addons/event/event.py index d13d455bc73..d624a381e1d 100644 --- a/addons/event/event.py +++ b/addons/event/event.py @@ -111,16 +111,30 @@ class event_event(osv.osv): """Get reserved, available, reserved but unconfirmed and used seats. @return: Dictionary of function field values. """ - res = dict([(id, {}) for id in ids]) - for event in self.browse(cr, uid, ids, context=context): - res[event.id]['seats_reserved'] = sum(reg.nb_register for reg in event.registration_ids if reg.state == "open") - res[event.id]['seats_used'] = sum(reg.nb_register for reg in event.registration_ids if reg.state == "done") - res[event.id]['seats_unconfirmed'] = sum(reg.nb_register for reg in event.registration_ids if reg.state == "draft") + keys = {'draft': 'seats_unconfirmed', 'open':'seats_reserved', 'done': 'seats_used'} + res = {} + for event_id in ids: + res[event_id] = {key:0 for key in keys.values()} + query = "SELECT state,sum(nb_register) FROM event_registration WHERE event_id = %s AND state IN ('draft','open','done') GROUP BY state" + for event in self.pool.get('event.event').browse(cr, uid, ids, context=context): + cr.execute(query, (event.id,)) + reg_states = cr.fetchall() + for reg_state in reg_states: + res[event.id][keys[reg_state[0]]] = reg_state[1] res[event.id]['seats_available'] = event.seats_max - \ (res[event.id]['seats_reserved'] + res[event.id]['seats_used']) \ if event.seats_max > 0 else None return res + def _get_events_from_registrations(self, cr, uid, ids, context=None): + """Get reserved, available, reserved but unconfirmed and used seats, of the event related to a registration. + @return: Dictionary of function field values. + """ + event_ids=set() + for registration in self.browse(cr, uid, ids, context=context): + event_ids.add(registration.event_id.id) + return list(event_ids) + def _subscribe_fnc(self, cr, uid, ids, fields, args, context=None): """This functional fields compute if the current user (uid) is already subscribed or not to the event passed in parameter (ids) """ @@ -142,10 +156,14 @@ class event_event(osv.osv): 'type': fields.many2one('event.type', 'Type of Event', readonly=False, states={'done': [('readonly', True)]}), 'seats_max': fields.integer('Maximum Avalaible Seats', oldname='register_max', help="You can for each event define a maximum registration level. If you have too much registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}), 'seats_min': fields.integer('Minimum Reserved Seats', oldname='register_min', help="You can for each event define a minimum registration level. If you do not enough registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}), - 'seats_reserved': fields.function(_get_seats, oldname='register_current', string='Reserved Seats', type='integer', multi='seats_reserved'), - 'seats_available': fields.function(_get_seats, oldname='register_avail', string='Available Seats', type='integer', multi='seats_reserved'), - 'seats_unconfirmed': fields.function(_get_seats, oldname='register_prospect', string='Unconfirmed Seat Reservations', type='integer', multi='seats_reserved'), - 'seats_used': fields.function(_get_seats, oldname='register_attended', string='Number of Participations', type='integer', multi='seats_reserved'), + 'seats_reserved': fields.function(_get_seats, oldname='register_current', string='Reserved Seats', type='integer', multi='seats_reserved', store={'event.registration': (_get_events_from_registrations, ['state'], 10), + 'event.event': (lambda self, cr, uid, ids, c = {}: ids, ['seats_max'], 20)}), + 'seats_available': fields.function(_get_seats, oldname='register_avail', string='Available Seats', type='integer', multi='seats_reserved', store={'event.registration': (_get_events_from_registrations, ['state'], 10), + 'event.event': (lambda self, cr, uid, ids, c = {}: ids, ['seats_max'], 20)}), + 'seats_unconfirmed': fields.function(_get_seats, oldname='register_prospect', string='Unconfirmed Seat Reservations', type='integer', multi='seats_reserved', store={'event.registration': (_get_events_from_registrations, ['state'], 10), + 'event.event': (lambda self, cr, uid, ids, c = {}: ids, ['seats_max'], 20)}), + 'seats_used': fields.function(_get_seats, oldname='register_attended', string='Number of Participations', type='integer', multi='seats_reserved', store={'event.registration': (_get_events_from_registrations, ['state'], 10), + 'event.event': (lambda self, cr, uid, ids, c = {}: ids, ['seats_max'], 20)}), 'registration_ids': fields.one2many('event.registration', 'event_id', 'Registrations', readonly=False, states={'done': [('readonly', True)]}), 'date_begin': fields.datetime('Start Date', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'date_end': fields.datetime('End Date', required=True, readonly=True, states={'draft': [('readonly', False)]}), From 045a12c5c2064d4b2fb33c24c00c7cb2521060d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 12:49:18 +0200 Subject: [PATCH 24/27] [FIX] website_sale: fixed post_msg, display only when having it (may have False, None, ..) bzr revid: tde@openerp.com-20140404104918-cyszi1l333173d1t --- addons/website_sale/controllers/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index ed6cb147828..7511e308b95 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -709,7 +709,8 @@ class Ecommerce(http.Controller): message = '

The payment seems to have been canceled.

' elif state == 'pending' and tx.acquirer_id.validation == 'manual': message = '

Your transaction is waiting confirmation.

' - message += tx.acquirer_id.post_msg + if tx.acquirer_id.post_msg: + message += tx.acquirer_id.post_msg else: message = '

Your transaction is waiting confirmation.

' validation = tx.acquirer_id.validation From 28f0649a7181272b528216d854c8e7438ff65aa9 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 4 Apr 2014 17:17:39 +0200 Subject: [PATCH 25/27] [FIX] skip undefined and keep formating as empty string bzr revid: mat@openerp.com-20140404151739-u61resk70xoih5he --- addons/web_graph/static/src/js/graph_widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_graph/static/src/js/graph_widget.js b/addons/web_graph/static/src/js/graph_widget.js index bb87e172718..3d8d8fa2d98 100644 --- a/addons/web_graph/static/src/js/graph_widget.js +++ b/addons/web_graph/static/src/js/graph_widget.js @@ -436,7 +436,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({ }, make_cell: function (row, col, value, index, raw) { - var formatted_value = raw ? value : openerp.web.format_value(value, {type:this.pivot.measures[index].type}), + var formatted_value = raw && !_.isUndefined(value) ? value : openerp.web.format_value(value, {type:this.pivot.measures[index].type}), cell = {value:formatted_value}; if (this.heatmap_mode === 'none') { return cell; } From 1d965535b0c30cc5d53260bc4bd53a3dd77fd050 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Sat, 5 Apr 2014 05:30:45 +0000 Subject: [PATCH 26/27] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20140405053045-3cts3jqyeqsu0x57 --- addons/account/i18n/pl.po | 10 ++++++---- addons/account_followup/i18n/pl.po | 29 ++++++++++++++++------------- addons/auth_signup/i18n/pl.po | 14 +++++++------- addons/hr_holidays/i18n/pl.po | 8 ++++---- addons/mail/i18n/pl.po | 12 ++++++------ addons/procurement/i18n/pl.po | 20 +++++++++++--------- addons/stock/i18n/pl.po | 10 +++++----- 7 files changed, 55 insertions(+), 48 deletions(-) diff --git a/addons/account/i18n/pl.po b/addons/account/i18n/pl.po index ef2849cd444..ef779200db0 100644 --- a/addons/account/i18n/pl.po +++ b/addons/account/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-12-22 12:46+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2014-04-04 19:18+0000\n" +"Last-Translator: Dariusz Żbikowski \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-03-27 06:26+0000\n" -"X-Generator: Launchpad (build 16967)\n" +"X-Launchpad-Export-Date: 2014-04-05 05:30+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -989,6 +989,8 @@ msgid "" " opening/closing fiscal " "year process." msgstr "" +"Nie możesz anulować uzgodnień pozycji dziennika jeśli zostały one " +"wygenerowane procesem zamykania/otwierania roku." #. module: account #: model:ir.actions.act_window,name:account.action_subscription_form_new diff --git a/addons/account_followup/i18n/pl.po b/addons/account_followup/i18n/pl.po index b851b85d5df..1a37b819f02 100644 --- a/addons/account_followup/i18n/pl.po +++ b/addons/account_followup/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-12 17:49+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2014-04-04 19:44+0000\n" +"Last-Translator: Dariusz Żbikowski \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-03-27 06:16+0000\n" -"X-Generator: Launchpad (build 16967)\n" +"X-Launchpad-Export-Date: 2014-04-05 05:30+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: account_followup #: model:email.template,subject:account_followup.email_template_account_followup_default @@ -109,7 +109,7 @@ msgstr "Kroki monitowania płatności" #. module: account_followup #: field:account_followup.print,email_body:0 msgid "Email Body" -msgstr "" +msgstr "Treść email" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_print @@ -403,7 +403,7 @@ msgstr "Monity o płatność" #. module: account_followup #: field:account_followup.followup.line,delay:0 msgid "Due Days" -msgstr "" +msgstr "Dni zwłoki" #. module: account_followup #: field:account.move.line,followup_line_id:0 @@ -419,7 +419,7 @@ msgstr "Ostatni monit o płatność" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_manual_reconcile_followup msgid "Reconcile Invoices & Payments" -msgstr "" +msgstr "Uzgadnianie Faktur i Płatności" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_s @@ -429,7 +429,7 @@ msgstr "Wykonaj manualnie monit o płatność" #. module: account_followup #: report:account_followup.followup.print:0 msgid "Li." -msgstr "" +msgstr "Sp." #. module: account_followup #: field:account_followup.print,email_conf:0 @@ -499,6 +499,7 @@ msgstr "Monitowanie płatności" #, python-format msgid "Email not sent because of email address of partner not filled in" msgstr "" +"Email nie został wysłany ponieważ adres email partnera nie został wypełniony" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup @@ -511,6 +512,8 @@ msgid "" "Optionally you can assign a user to this field, which will make him " "responsible for the action." msgstr "" +"Opcjonalnie możesz przypisać użytkownika do tego pola, który stanie się " +"odpowiedzialny za tę akcję." #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_sending_results @@ -528,7 +531,7 @@ msgstr "" #: code:addons/account_followup/wizard/account_followup_print.py:172 #, python-format msgid " manual action(s) assigned:" -msgstr "" +msgstr " ręczna akcja przypisana do:" #. module: account_followup #: view:res.partner:0 @@ -548,13 +551,13 @@ msgstr "Przeszukaj monity o płatność" #. module: account_followup #: view:res.partner:0 msgid "Account Move line" -msgstr "" +msgstr "Pozycja zapisu" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:237 #, python-format msgid "Send Letters and Emails: Actions Summary" -msgstr "" +msgstr "Listy i Email: Podsumowanie akcji" #. module: account_followup #: view:account_followup.print:0 @@ -916,7 +919,7 @@ msgstr "" #. module: account_followup #: view:res.partner:0 msgid "Responsible" -msgstr "" +msgstr "Odpowiedzialny" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_finance_followup @@ -945,7 +948,7 @@ msgstr "Działanie monitowania płatności" #. module: account_followup #: view:account_followup.stat:0 msgid "Including journal entries marked as a litigation" -msgstr "" +msgstr "Załącz pozycje dziennika oznaczone jako sporne" #. module: account_followup #: report:account_followup.followup.print:0 diff --git a/addons/auth_signup/i18n/pl.po b/addons/auth_signup/i18n/pl.po index ebbff79b333..a95f5b3738f 100644 --- a/addons/auth_signup/i18n/pl.po +++ b/addons/auth_signup/i18n/pl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-12 18:01+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2014-04-04 19:12+0000\n" +"Last-Translator: Dariusz Żbikowski \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-03-27 07:32+0000\n" -"X-Generator: Launchpad (build 16967)\n" +"X-Launchpad-Export-Date: 2014-04-05 05:30+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: auth_signup #: field:res.partner,signup_type:0 @@ -80,7 +80,7 @@ msgstr "Wprowadź hasło o potwierdź je" #. module: auth_signup #: view:res.users:0 msgid "Send an email to the user to (re)set their password." -msgstr "" +msgstr "Wyślij email do użytkownika w celu zresetowania hasła" #. module: auth_signup #. openerp-web @@ -99,7 +99,7 @@ msgstr "Nowy" #: code:addons/auth_signup/res_users.py:258 #, python-format msgid "Mail sent to:" -msgstr "" +msgstr "Mail wysłano do:" #. module: auth_signup #: field:res.users,state:0 @@ -191,7 +191,7 @@ msgstr "Proszę wprowadź nazwę użytkownika lub adres email." #. module: auth_signup #: selection:res.users,state:0 msgid "Resetting Password" -msgstr "" +msgstr "Resetowane hasło" #. module: auth_signup #. openerp-web diff --git a/addons/hr_holidays/i18n/pl.po b/addons/hr_holidays/i18n/pl.po index 180ca272e3b..8473fa6ee49 100644 --- a/addons/hr_holidays/i18n/pl.po +++ b/addons/hr_holidays/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2013-06-22 10:54+0000\n" +"PO-Revision-Date: 2014-04-04 19:21+0000\n" "Last-Translator: Dariusz Kubiak \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-03-27 06:53+0000\n" -"X-Generator: Launchpad (build 16967)\n" +"X-Launchpad-Export-Date: 2014-04-05 05:30+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -680,7 +680,7 @@ msgstr "Podsumowanie" #. module: hr_holidays #: model:hr.holidays.status,name:hr_holidays.holiday_status_unpaid msgid "Unpaid" -msgstr "Bezpłatny" +msgstr "Urlop bezpłatny" #. module: hr_holidays #: xsl:holidays.summary:0 diff --git a/addons/mail/i18n/pl.po b/addons/mail/i18n/pl.po index e44e0a315b4..051e5bad35f 100644 --- a/addons/mail/i18n/pl.po +++ b/addons/mail/i18n/pl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-12-17 19:55+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2014-04-04 19:25+0000\n" +"Last-Translator: Dariusz Żbikowski \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-03-27 07:26+0000\n" -"X-Generator: Launchpad (build 16967)\n" +"X-Launchpad-Export-Date: 2014-04-05 05:30+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: mail #: view:mail.followers:0 @@ -1363,7 +1363,7 @@ msgstr "Wiadomość Rich-text/HTML" #. module: mail #: view:mail.mail:0 msgid "Creation Month" -msgstr "Miesiąc tworzenia" +msgstr "Miesiąc utworzenia" #. module: mail #. openerp-web @@ -1509,7 +1509,7 @@ msgstr "" #: code:addons/mail/static/src/xml/mail.xml:213 #, python-format msgid "Please, wait while the file is uploading." -msgstr "" +msgstr "Poczekaj, aż plik zostanie załadowany." #. module: mail #: view:mail.group:0 diff --git a/addons/procurement/i18n/pl.po b/addons/procurement/i18n/pl.po index b503cce0ce3..8cb301665df 100644 --- a/addons/procurement/i18n/pl.po +++ b/addons/procurement/i18n/pl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2012-12-16 20:56+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2014-04-04 19:08+0000\n" +"Last-Translator: Dariusz Żbikowski \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-03-27 07:18+0000\n" -"X-Generator: Launchpad (build 16967)\n" +"X-Launchpad-Export-Date: 2014-04-05 05:30+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: procurement #: model:ir.ui.menu,name:procurement.menu_stock_sched @@ -493,7 +493,7 @@ msgstr "Nieprzeczytane wiadomości" #. module: procurement #: selection:mrp.property,composition:0 msgid "plus" -msgstr "" +msgstr "plus" #. module: procurement #: help:procurement.order,state:0 @@ -515,6 +515,8 @@ msgid "" "If the active field is set to False, it will allow you to hide the " "orderpoint without removing it." msgstr "" +"Jeśli pole nie jest aktywne, pozwoli ci ukryć punkt zamawiania bez jego " +"kasowania." #. module: procurement #: view:product.product:0 @@ -547,8 +549,8 @@ msgid "" "You have to select a product unit of measure in the same category than the " "default unit of measure of the product" msgstr "" -"Musisz wybrać jednostkę miary z tej samej kategorii do domyślna jednostka " -"produktu." +"Musisz wybrać jednostkę miary z tej samej kategorii, co domyślna jednostka " +"produktu" #. module: procurement #: view:procurement.order:0 @@ -589,7 +591,7 @@ msgstr "Projekt" #: model:ir.ui.menu,name:procurement.menu_stock_proc_schedulers #: view:procurement.order.compute.all:0 msgid "Run Schedulers" -msgstr "uruchom planowanie" +msgstr "Uruchom planowanie" #. module: procurement #: view:procurement.order.compute:0 @@ -1027,7 +1029,7 @@ msgstr "Zapotrzbowanie uruchomione późno" #. module: procurement #: selection:mrp.property,composition:0 msgid "min" -msgstr "" +msgstr "min." #. module: procurement #: view:make.procurement:0 diff --git a/addons/stock/i18n/pl.po b/addons/stock/i18n/pl.po index 46fc140db91..66cb0cb868c 100644 --- a/addons/stock/i18n/pl.po +++ b/addons/stock/i18n/pl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-12-22 15:56+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" +"PO-Revision-Date: 2014-04-04 19:47+0000\n" +"Last-Translator: Dariusz Żbikowski \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-03-27 05:52+0000\n" -"X-Generator: Launchpad (build 16967)\n" +"X-Launchpad-Export-Date: 2014-04-05 05:30+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: stock #: field:stock.inventory.line.split,line_exist_ids:0 @@ -1420,7 +1420,7 @@ msgstr "Zapas fizyczny" #: code:addons/stock/wizard/stock_move.py:214 #, python-format msgid "Processing Error!" -msgstr "" +msgstr "Błąd przetwarzania!" #. module: stock #: help:stock.location,chained_company_id:0 From de380aa914588a9c81fc1ef3e083ec42d8c84fd5 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 6 Apr 2014 15:25:19 +0200 Subject: [PATCH 27/27] [IMP] button snippet bzr revid: fp@tinyerp.com-20140406132519-eookdnec20c6sg20 --- addons/website/views/snippets.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/website/views/snippets.xml b/addons/website/views/snippets.xml index 0df57080b99..3e27ffb227f 100644 --- a/addons/website/views/snippets.xml +++ b/addons/website/views/snippets.xml @@ -511,13 +511,13 @@ Button
-
+
-
+

50,000+ companies run Odoo to grow their businesses. -

+

Join us and make your company a better place.