-
+
@
Organized by
diff --git a/addons/event_sale/event_sale_view.xml b/addons/event_sale/event_sale_view.xml
index 82c1c05b714..53e8a4cc18f 100644
--- a/addons/event_sale/event_sale_view.xml
+++ b/addons/event_sale/event_sale_view.xml
@@ -9,7 +9,7 @@
-
+
diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml
index 0dcc675e665..99d7af027e9 100644
--- a/addons/hr/hr_view.xml
+++ b/addons/hr/hr_view.xml
@@ -130,11 +130,11 @@
-
![]()
+
-
diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py
index 70280e64a5d..5bcce0b8927 100644
--- a/addons/mail/mail_alias.py
+++ b/addons/mail/mail_alias.py
@@ -161,7 +161,7 @@ class mail_alias(osv.Model):
registry = RegistryManager.get(cr.dbname)
mail_alias = registry.get('mail.alias')
child_class_model = registry.get(child_model_name)
- no_alias_ids = child_class_model.search(cr, SUPERUSER_ID, [('alias_id', '=', False)])
+ no_alias_ids = child_class_model.search(cr, SUPERUSER_ID, [('alias_id', '=', False)], context={'active_test':False})
# Use read() not browse(), to avoid prefetching uninitialized inherited fields
for obj_data in child_class_model.read(cr, SUPERUSER_ID, no_alias_ids, [alias_key]):
alias_vals = {'alias_name': '%s%s' % (alias_prefix, obj_data[alias_key]) }
diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml
index a71ec972326..d21d32a3893 100644
--- a/addons/mail/mail_group_view.xml
+++ b/addons/mail/mail_group_view.xml
@@ -25,10 +25,10 @@
-
![]()
+
-
+
-
diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml
index c394544574d..9cb3d8dbfa2 100644
--- a/addons/mrp/mrp_view.xml
+++ b/addons/mrp/mrp_view.xml
@@ -981,11 +981,21 @@
+
+ product.normal.form.mrp.inherit
+ product.product
+
+
+
+
+
+
+
product.normal.form.mrp.inherit
product.product
-
+
diff --git a/addons/pad/pad.py b/addons/pad/pad.py
index 40569fcd589..3431e196b59 100644
--- a/addons/pad/pad.py
+++ b/addons/pad/pad.py
@@ -8,6 +8,11 @@ from tools.translate import _
class pad_common(osv.osv_memory):
_name = 'pad.common'
_pad_fields = []
+
+ def pad_content(self, cr, uid, url ,context=None):
+ content = urllib2.urlopen('%s/export/html'%url).read()
+ return content
+
def pad_generate_url(self, cr, uid, context=None):
pad_url_template = self.pool.get('res.users').browse(cr,uid, uid, context).company_id.pad_url_template
s = string.ascii_uppercase + string.digits
@@ -20,6 +25,13 @@ class pad_common(osv.osv_memory):
url = pad_url_template % template_vars
return url
+ # TODO
+ # add attribute on columns pad_content_field =
+ # override default write to load the content at write and store it in the field
+ # reverse engineer protocol to be setHtml without using the api key
+ # override default get to generate urls
+ # override read to generate url and store the content if empty
+
def copy(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
diff --git a/addons/pad/res_company.py b/addons/pad/res_company.py
index bd955cd0481..703e655219b 100644
--- a/addons/pad/res_company.py
+++ b/addons/pad/res_company.py
@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
from osv import fields, osv
-DEFAULT_PAD_TEMPLATE = 'http://beta.etherpad.org/p/%(db)s-%(model)s-%(salt)s'
+DEFAULT_PAD_TEMPLATE = 'http://pad.openerp.com/p/%(db)s-%(model)s-%(salt)s'
+DEFAULT_PAD_TEMPLATE = ''
class company_pad(osv.osv):
_inherit = 'res.company'
diff --git a/addons/pad/static/src/css/etherpad.css b/addons/pad/static/src/css/etherpad.css
index a0240afcab7..8ea7972071e 100644
--- a/addons/pad/static/src/css/etherpad.css
+++ b/addons/pad/static/src/css/etherpad.css
@@ -1,52 +1,39 @@
-.oe_etherpad_head{
+.oe_pad_head {
width: 100%;
display: block;
- padding-left:3px;
- cursor:pointer;
+ padding: 4px;
}
-.oe_etherpad_fullscreen div.oe_etherpad_head .oe_normal {
- display: none;
+
+.oe_pad_readonly {
+ border: 1px solid #ddd;
+ padding: 8px;
}
-.oe_etherpad_normal div.oe_etherpad_head .oe_fullscreen {
- display: none;
-}
-.oe_etherpad_fullscreen {
+
+.oe_pad_fullscreen {
position: fixed;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background-color: white;
- z-index:10001 !important;
-}
-.etherpad_default{
- width: 100%;
- height: 450px;
-}
-.oe_etherpad_fullscreen .etherpad_default{
- height: 100%
+ z-index: 1000;
}
-.etherpad_body{
- overflow:hidden;
+.oe_pad_fullscreen .oe_pad_content {
+ height: 100%;
}
-.etherpad_readonly{
- width: 100%;
- height: 450px;
- overflow:auto;
+.etherpad_readonly ul, .etherpad_readonly ol {
+ margin-before: 1em;
+ margin-after: 1em;
+ margin-start: 0px;
+ margin-end: 0px;
+ padding-start: 40px !important;
}
-.etherpad_readonly ul,.etherpad_readonly ol{
- -webkit-margin-before: 1em;
- -webkit-margin-after: 1em;
- -webkit-margin-start: 0px;
- -webkit-margin-end: 0px;
- -webkit-padding-start: 40px !important;
-}
-.etherpad_readonly ul li{
+.etherpad_readonly ul li{
list-style-type: disc;
}
-.etherpad_readonly ol li{
+.etherpad_readonly ol li{
list-style-type: decimal;
}
.etherpad_readonly .indent li{
diff --git a/addons/pad/static/src/js/pad.js b/addons/pad/static/src/js/pad.js
index df182650afe..a295e860a51 100644
--- a/addons/pad/static/src/js/pad.js
+++ b/addons/pad/static/src/js/pad.js
@@ -1,32 +1,47 @@
openerp.pad = function(instance) {
-instance.web.form.FieldPad = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldPad = instance.web.form.AbstractField.extend({
template: 'FieldPad',
- initialize_content: function() {
+ start: function() {
+ this._super();
var self = this;
- this.$textarea = undefined;
- this.$el.find('div.oe_etherpad_head').click(function(ev) {
- self.$el.toggleClass('oe_etherpad_fullscreen').toggleClass('oe_etherpad_normal');
+ this.$el.find('div.oe_pad_head').click(function(ev) {
+ self.$el.toggleClass('oe_pad_fullscreen');
+ });
+ this.on("change:effective_readonly", this, function() {
+ this.render_value();
});
},
- set_value: function(value_) {
- this._super(value_);
- this.render_value();
+ set_value: function(val) {
+ var self = this;
+ var _super = self._super;
+ _super.apply(self,[val]);
+ if (val === false || val === "") {
+ self.field_manager.dataset.call('pad_generate_url').then(function(r) {
+ _super.apply(self,[r]);
+ self.render_value();
+ });
+ } else {
+ self.render_value();
+ }
},
render_value: function() {
+ console.log("display");
var self = this;
var value = this.get('value');
- if(value !== false) {
- var url = value.split('\n')[0];
+
+ if (!_.str.startsWith(value, "http")) {
+ self.$('.oe_pad_content').html(instance.web.qweb.render('FieldPad.unconfigured'));
+ } else {
if (!this.get("effective_readonly")) {
var pad_username = this.session.username;
- var code = '';
- this.$el.find('div.oe_etherpad_default').html(code);
+ var code = '';
+ this.$('.oe_pad_content').html(code);
} else {
- $.get(url+'/export/html').success(function(data) {
- self.$el.html('
'+data+'
');
+ $.get(value+'/export/html').success(function(data) {
+ self.$('.oe_pad_content').html(''+data+'
');
}).error(function() {
- self.$el.text('Unable to load pad');
+ self.$('.oe_pad_content').text('Unable to load pad');
});
}
}
diff --git a/addons/pad/static/src/xml/pad.xml b/addons/pad/static/src/xml/pad.xml
index e128fb183fb..58266a2594a 100644
--- a/addons/pad/static/src/xml/pad.xml
+++ b/addons/pad/static/src/xml/pad.xml
@@ -2,17 +2,19 @@
-
-
-
-
- Fullscreen
- Return to Record
-
-
+
+
+
+ Please configure your etherpad server.
+ OpenERP Entreprise customers may safely use pad.openerp.com as a server using the following template:
+
+ http://pad.openerp.com/p/%(db)s-%(model)s-%(salt)s
+
-
diff --git a/addons/pad_project/project_task.py b/addons/pad_project/project_task.py
index 46c2c54cd46..513fc3fef5d 100644
--- a/addons/pad_project/project_task.py
+++ b/addons/pad_project/project_task.py
@@ -9,6 +9,3 @@ class task(osv.osv):
_columns = {
'description_pad': fields.char('Description PAD', size=250)
}
- _defaults = {
- 'description_pad': lambda self, cr, uid, context: self.pad_generate_url(cr, uid, context),
- }
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index dce19ab77b6..0f8e5e57e5f 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -625,7 +625,7 @@
product.normal.form.inherit
product.product
-
+
diff --git a/addons/portal_hr_employees/hr_employee_view.xml b/addons/portal_hr_employees/hr_employee_view.xml
index f36e2a4d2d8..dc1b1bae56c 100644
--- a/addons/portal_hr_employees/hr_employee_view.xml
+++ b/addons/portal_hr_employees/hr_employee_view.xml
@@ -38,7 +38,7 @@
diff --git a/addons/portal_project_issue/portal_project_issue_view.xml b/addons/portal_project_issue/portal_project_issue_view.xml
index 14e944ab32e..5d0b4ce081e 100644
--- a/addons/portal_project_issue/portal_project_issue_view.xml
+++ b/addons/portal_project_issue/portal_project_issue_view.xml
@@ -18,7 +18,7 @@
diff --git a/addons/procurement/procurement_view.xml b/addons/procurement/procurement_view.xml
index dbdc65c6763..f2a8dc98cb0 100644
--- a/addons/procurement/procurement_view.xml
+++ b/addons/procurement/procurement_view.xml
@@ -286,7 +286,7 @@
product.normal.form.orderpoint.inherit
product.product
-
+
diff --git a/addons/product/product.py b/addons/product/product.py
index aa1bc3954a0..214445204bb 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -541,7 +541,7 @@ class product_product(osv.osv):
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the product without removing it."),
'variants': fields.char('Variants', size=64),
'product_tmpl_id': fields.many2one('product.template', 'Product Template', required=True, ondelete="cascade"),
- 'ean13': fields.char('EAN13', size=13, help="The numbers encoded in EAN-13 bar codes are product identification numbers."),
+ 'ean13': fields.char('EAN13 Barcode', size=13, help="The numbers encoded in EAN-13 bar codes are product identification numbers."),
'packaging' : fields.one2many('product.packaging', 'product_id', 'Logistical Units', help="Gives the different ways to package the same product. This has no impact on the picking order and is mainly used if you use the EDI module."),
'price_extra': fields.float('Variant Price Extra', digits_compute=dp.get_precision('Product Price')),
'price_margin': fields.float('Variant Price Margin', digits_compute=dp.get_precision('Product Price')),
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 70651a0a795..17b4a7ecc68 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -86,12 +86,11 @@
-
-
+
-
+
@@ -118,28 +117,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/product/security/product_security.xml b/addons/product/security/product_security.xml
index 1d2c795083a..73ab6f8a3d5 100644
--- a/addons/product/security/product_security.xml
+++ b/addons/product/security/product_security.xml
@@ -23,7 +23,12 @@
Purchase Pricelists
-
+
+
+ Costing Method
+
+
+
Manage Multiple Units of Measure
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 6dbcaebd045..6195ca909d2 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -239,30 +239,52 @@
-
+
-
-
-
-
+
+
+ | Deadline |
+ |
+
+
+ | Progress |
+ / |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/project/static/src/css/project.css b/addons/project/static/src/css/project.css
index ebab44e225a..51bb8f45ee9 100644
--- a/addons/project/static/src/css/project.css
+++ b/addons/project/static/src/css/project.css
@@ -1,23 +1,41 @@
+.oe_kanban_card {
+ margin: 2px;
+}
+
.oe_kanban_project {
- width: 300px;
+ width: 250px;
+ min-height: 160px;
}
.oe_kanban_project_list {
- margin: 8px 0 8px 0;
+ margin: 4px 0;
}
-/*.oe_kanban_project_list a:not(:first-child):before {
- content: ' - ';
-}*/
-.oe_kanban_project_fields div {
- display: inline-block;
- width: 49%;
- box-sizing: border-box;
- padding: 2px 0 2px 0;
+
+.openerp .oe_kanban_content h4 {
+ margin: 0 0 8px;
}
+
+.oe_kanban_content > table {
+ width: 100%;
+}
+
+.oe_kanban_content > table > th {
+ padding: 0;
+ border-right: 1px solid #DDD;
+ vertical-align: top;
+ font-weight: normal;
+}
+
+.oe_kanban_content > table > td {
+ padding: 2px 0 2px 8px;
+ color: #888;
+}
+
.oe_kanban_project_fields div:nth-child(odd) {
border-right: 1px solid #dddddd;
vertical-align: top;
padding-right: 8px;
}
+
.oe_kanban_project_fields div:nth-child(even) {
padding-left: 8px;
color: #888888;
@@ -27,6 +45,7 @@
padding-top: 1em;
margin-top: 8px;
}
+
.oe_kanban_project_avatars img {
width: 30px;
height: 30px;
diff --git a/addons/project_mrp/project_mrp_view.xml b/addons/project_mrp/project_mrp_view.xml
index ffceb33a611..841a61e6c31 100644
--- a/addons/project_mrp/project_mrp_view.xml
+++ b/addons/project_mrp/project_mrp_view.xml
@@ -14,7 +14,7 @@
product.form.view.inherit
product.product
-
+
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index aec55bf93c2..f513e2a60e8 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -554,5 +554,20 @@
+
+
+
+
+ product.normal.supplier.form.inherit
+ product.product
+
+
+
+
+
+
+
+
+
diff --git a/addons/purchase/res_config.py b/addons/purchase/res_config.py
index 6beac5a4cd0..3d9c858cec5 100644
--- a/addons/purchase/res_config.py
+++ b/addons/purchase/res_config.py
@@ -40,6 +40,9 @@ class purchase_config_settings(osv.osv_memory):
'group_uom':fields.boolean("manage different units of measure for products",
implied_group='product.group_uom',
help="""Allows you to select and maintain different units of measure for products."""),
+ 'group_costing_method':fields.boolean("compute product cost price based on average cost",
+ implied_group='product.group_costing_method',
+ help="""Allows you to compute product cost price based on average cost."""),
'group_purchase_delivery_address': fields.boolean("allow a different address for incoming products and invoicings",
implied_group='purchase.group_delivery_invoice_address',
help="Allows you to specify different delivery and invoice addresses on a purchase order."),
diff --git a/addons/purchase/res_config_view.xml b/addons/purchase/res_config_view.xml
index 23d89f1a7f1..00e0b6108e8 100644
--- a/addons/purchase/res_config_view.xml
+++ b/addons/purchase/res_config_view.xml
@@ -59,6 +59,10 @@
+
+
+
+
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index 188f81b6cbe..a1b270934e2 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -182,7 +182,7 @@
product.product
-
+
diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml
index 3264057ae21..477c458da02 100644
--- a/addons/stock/product_view.xml
+++ b/addons/stock/product_view.xml
@@ -50,6 +50,40 @@
+
+
+ product.normal.procurement.locations.inherit
+ product.product
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
product.product.standard.price.form.inherit
@@ -178,10 +212,10 @@
-
![]()
+
-
+
- Code:
- Stock on hand:
@@ -210,21 +244,5 @@
-
- product.normal.stock.property.form.inherit
- product.product
-
-
-
-
-
-
-
-
-
-
-
-
-