[MERGE]Merged with latest trunk
bzr revid: dhr@tinyerp.com-20120829102402-3sdf5i8rfgq9dxca
This commit is contained in:
commit
0e14e8dc20
|
@ -7,7 +7,7 @@
|
|||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<notebook position="inside">
|
||||
<page string="Accounting" groups="base.group_user">
|
||||
<page string="Accounting" groups="account.group_account_user">
|
||||
<group name="properties">
|
||||
<group>
|
||||
<field name="property_account_income" domain="[('type','<>','view'),('type','<>','consolidation')]" attrs="{'readonly':[('sale_ok','=',0)]}"/>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<field name="purchase_ok" position="after">
|
||||
<field name="event_ok" on_change="onchange_event_ok(event_ok, context)"/>
|
||||
</field>
|
||||
<field name='supply_method' position='after'>
|
||||
<field name='procure_method' position='before'>
|
||||
<field name="event_type_id" attrs="{'readonly': [('event_ok', '=', False)]}"/>
|
||||
</field>
|
||||
</field>
|
||||
|
|
|
@ -981,11 +981,21 @@
|
|||
</data>
|
||||
</field>
|
||||
</record>
|
||||
<record id="product_normal_form_supply_view" model="ir.ui.view">
|
||||
<field name="name">product.normal.form.mrp.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='procure_method']" position="after">
|
||||
<field name="supply_method" groups="base.group_user"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="product_normal_form_view" model="ir.ui.view">
|
||||
<field name="name">product.normal.form.mrp.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Procurement & Locations" position="inside">
|
||||
<separator string="Bill of Materials"/>
|
||||
|
|
|
@ -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 = {}
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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 = '<iframe width="100%" height="100%" frameborder="0" src="'+url+'?showChat=false&userName='+pad_username+'"></iframe>';
|
||||
this.$el.find('div.oe_etherpad_default').html(code);
|
||||
var code = '<iframe width="100%" height="100%" frameborder="0" src="'+value+'?showChat=false&userName='+pad_username+'"></iframe>';
|
||||
this.$('.oe_pad_content').html(code);
|
||||
} else {
|
||||
$.get(url+'/export/html').success(function(data) {
|
||||
self.$el.html('<div class="etherpad_readonly">'+data+'</div>');
|
||||
$.get(value+'/export/html').success(function(data) {
|
||||
self.$('.oe_pad_content').html('<div class="oe_pad_readonly">'+data+'</div>');
|
||||
}).error(function() {
|
||||
self.$el.text('Unable to load pad');
|
||||
self.$('.oe_pad_content').text('Unable to load pad');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,19 @@
|
|||
<!-- vim:fdl=1:
|
||||
-->
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="FieldPad">
|
||||
<t t-if="!widget.get('effective_readonly')">
|
||||
<div class="oe_form_field_text oe_etherpad_normal">
|
||||
<div class="oe_etherpad_head">
|
||||
<span class="oe_normal">Fullscreen</span>
|
||||
<span class="oe_fullscreen">Return to Record</span>
|
||||
</div>
|
||||
<div class="oe_etherpad_default" ></div>
|
||||
<div class="oe_form_field_text oe_pad">
|
||||
<div class="oe_pad_head">
|
||||
<span class="oe_pad_switch">Fullscreen</span>
|
||||
</div>
|
||||
</t>
|
||||
<div class="oe_pad_content"></div>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="FieldPad.unconfigured">
|
||||
Please configure your etherpad server.<br/>
|
||||
OpenERP Entreprise customers may safely use pad.openerp.com as a server using the following template:<br/>
|
||||
<blockquote>
|
||||
http://pad.openerp.com/p/%(db)s-%(model)s-%(salt)s
|
||||
</blockquote>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
|
|
|
@ -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),
|
||||
}
|
||||
|
|
|
@ -625,7 +625,7 @@
|
|||
<record id="product_normal_form_view" model="ir.ui.view">
|
||||
<field name="name">product.normal.form.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<group name="misc" position="after">
|
||||
<group name="pos" colspan="2" col="2">
|
||||
|
|
|
@ -286,7 +286,7 @@
|
|||
<record id="product_normal_form_view" model="ir.ui.view">
|
||||
<field name="name">product.normal.form.orderpoint.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Procurement & Locations" position="inside">
|
||||
<separator string="Minimum Stock Rules"/>
|
||||
|
|
|
@ -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')),
|
||||
|
|
|
@ -86,12 +86,11 @@
|
|||
</group>
|
||||
<group string="Procurement">
|
||||
<field name="type"/>
|
||||
<field name="procure_method" groups="base.group_user"/>
|
||||
<field name="supply_method" groups="base.group_user"/>
|
||||
<field name="procure_method" groups="base.group_user" attrs="{'invisible':[('type','=', 'service')]}"/>
|
||||
</group>
|
||||
<group string="Prices">
|
||||
<field name="list_price"/>
|
||||
<field name="cost_method" groups="base.group_user"/>
|
||||
<field name="cost_method" groups="product.group_costing_method"/>
|
||||
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
|
||||
<field name="price_margin" groups="product.group_product_variant"/>
|
||||
<field name="price_extra" groups="product.group_product_variant"/>
|
||||
|
@ -118,28 +117,6 @@
|
|||
|
||||
</group>
|
||||
</page>
|
||||
<page string="Procurement & Locations" groups="base.group_user">
|
||||
<group>
|
||||
<group name="delay" string="Delays">
|
||||
<field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/>
|
||||
<field name="produce_delay" attrs="{'invisible':[('type','=','service')]}"/>
|
||||
<field name="warranty"/>
|
||||
</group>
|
||||
<group name="store" string="Storage Localisation">
|
||||
<field name="loc_rack" attrs="{'readonly':[('type','=','service')]}"/>
|
||||
<field name="loc_row" attrs="{'readonly':[('type','=','service')]}"/>
|
||||
<field name="loc_case" attrs="{'readonly':[('type','=','service')]}"/>
|
||||
</group>
|
||||
<group name="misc" string="Miscellaneous">
|
||||
<field name="active"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
</page>
|
||||
<page string="Suppliers" groups="base.group_user">
|
||||
<field name="seller_ids" context="{'uom_id': uom_id}"/>
|
||||
</page>
|
||||
<page string="Descriptions" groups="base.group_user">
|
||||
<separator string="Description"/>
|
||||
<field name="description"/>
|
||||
|
|
|
@ -23,7 +23,12 @@
|
|||
<field name="name">Purchase Pricelists</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="group_costing_method" model="res.groups">
|
||||
<field name="name">Costing Method</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
</record>
|
||||
|
||||
<record id="group_uom" model="res.groups">
|
||||
<field name="name">Manage Multiple Units of Measure</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<record id="view_product_task_form" model="ir.ui.view">
|
||||
<field name="name">product.form.view.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="active" position="after">
|
||||
<field name="project_id" attrs="{'readonly':[('type','!=','service')]}" />
|
||||
|
|
|
@ -554,5 +554,20 @@
|
|||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Product Suppliers-->
|
||||
|
||||
<record id="view_product_supplier_inherit" model="ir.ui.view">
|
||||
<field name="name">product.normal.supplier.form.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[@string='Descriptions']" position="before">
|
||||
<page string="Suppliers" groups="base.group_user">
|
||||
<field name="seller_ids" context="{'uom_id': uom_id}"/>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -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."),
|
||||
|
|
|
@ -59,6 +59,10 @@
|
|||
<field name="group_purchase_delivery_address" class="oe_inline"/>
|
||||
<label for="group_purchase_delivery_address"/>
|
||||
</div>
|
||||
<div>
|
||||
<field name="group_costing_method" class="oe_inline"/>
|
||||
<label for="group_costing_method"/>
|
||||
</div>
|
||||
<div name="module_purchase_double_validation">
|
||||
<field name="module_purchase_double_validation" class="oe_inline"/>
|
||||
<label for="module_purchase_double_validation"/>
|
||||
|
|
|
@ -182,7 +182,7 @@
|
|||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="supply_method" position="after">
|
||||
<field name="procure_method" position="before">
|
||||
<group colspan="2" col="2" attrs="{'invisible': [('supply_method','<>','buy')]}">
|
||||
<field name="purchase_requisition"/>
|
||||
</group>
|
||||
|
|
|
@ -50,6 +50,40 @@
|
|||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_normal_procurement_locations_form" model="ir.ui.view">
|
||||
<field name="name">product.normal.procurement.locations.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<notebook position="inside">
|
||||
<page string="Procurement & Locations" groups="base.group_user">
|
||||
<group>
|
||||
<group name="delay" string="Delays">
|
||||
<field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/>
|
||||
<field name="produce_delay" attrs="{'invisible':[('type','=','service')]}"/>
|
||||
<field name="warranty"/>
|
||||
</group>
|
||||
<group name="store" string="Storage Localisation">
|
||||
<field name="loc_rack" attrs="{'readonly':[('type','=','service')]}"/>
|
||||
<field name="loc_row" attrs="{'readonly':[('type','=','service')]}"/>
|
||||
<field name="loc_case" attrs="{'readonly':[('type','=','service')]}"/>
|
||||
</group>
|
||||
<group name="store" groups="stock.group_locations">
|
||||
<separator string="Counter-Part Locations Properties" colspan="2"/>
|
||||
<field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/>
|
||||
<field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/>
|
||||
<field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/>
|
||||
</group>
|
||||
<group name="misc" string="Miscellaneous">
|
||||
<field name="active"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_product_standard_price_form" model="ir.ui.view">
|
||||
<field name="name">product.product.standard.price.form.inherit</field>
|
||||
|
@ -210,21 +244,5 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_normal_property_form" model="ir.ui.view">
|
||||
<field name="name">product.normal.stock.property.form.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<group name="store" position="after">
|
||||
<group name="store" groups="stock.group_locations">
|
||||
<separator string="Counter-Part Locations Properties" colspan="2"/>
|
||||
<field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/>
|
||||
<field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/>
|
||||
<field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/>
|
||||
</group>
|
||||
</group>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
Loading…
Reference in New Issue