diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 191bd6ec819..ae60e4628ba 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -21,6 +21,7 @@
from datetime import datetime
from osv import osv, fields
+import decimal_precision as dp
from tools.translate import _
import netsvc
import time
@@ -205,7 +206,7 @@ class mrp_bom(osv.osv):
'product_id': fields.many2one('product.product', 'Product', required=True),
'product_uos_qty': fields.float('Product UOS Qty'),
'product_uos': fields.many2one('product.uom', 'Product UOS', help="Product UOS (Unit of Sale) is the unit of measurement for the invoicing and promotion of stock."),
- 'product_qty': fields.float('Product Qty', required=True),
+ 'product_qty': fields.float('Product Qty', required=True, digits_compute=dp.get_precision('Product UoM')),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True, help="UoM (Unit of Measure) is the unit of measurement for the inventory control"),
'product_rounding': fields.float('Product Rounding', help="Rounding applied on the product quantity."),
'product_efficiency': fields.float('Manufacturing Efficiency', required=True, help="A factor of 0.9 means a loss of 10% within the production process."),
@@ -447,7 +448,7 @@ class mrp_production(osv.osv):
'priority': fields.selection([('0','Not urgent'),('1','Normal'),('2','Urgent'),('3','Very Urgent')], 'Priority'),
'product_id': fields.many2one('product.product', 'Product', required=True, readonly=True, states={'draft':[('readonly',False)]}),
- 'product_qty': fields.float('Product Qty', required=True, states={'draft':[('readonly',False)]}, readonly=True),
+ 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product UoM'), required=True, states={'draft':[('readonly',False)]}, readonly=True),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True, states={'draft':[('readonly',False)]}, readonly=True),
'product_uos_qty': fields.float('Product UoS Qty', states={'draft':[('readonly',False)]}, readonly=True),
'product_uos': fields.many2one('product.uom', 'Product UoS', states={'draft':[('readonly',False)]}, readonly=True),
@@ -982,7 +983,7 @@ class mrp_production_product_line(osv.osv):
_columns = {
'name': fields.char('Name', size=64, required=True),
'product_id': fields.many2one('product.product', 'Product', required=True),
- 'product_qty': fields.float('Product Qty', required=True),
+ 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product UoM'), required=True),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
'product_uos_qty': fields.float('Product UOS Qty'),
'product_uos': fields.many2one('product.uom', 'Product UOS'),
diff --git a/addons/mrp/wizard/change_production_qty.py b/addons/mrp/wizard/change_production_qty.py
index 87b6d00190e..fa1549458cf 100644
--- a/addons/mrp/wizard/change_production_qty.py
+++ b/addons/mrp/wizard/change_production_qty.py
@@ -21,13 +21,14 @@
from osv import fields, osv
from tools.translate import _
+import decimal_precision as dp
class change_production_qty(osv.osv_memory):
_name = 'change.production.qty'
_description = 'Change Quantity of Products'
_columns = {
- 'product_qty': fields.float('Product Qty', required=True),
+ 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product UoM'), required=True),
}
def default_get(self, cr, uid, fields, context=None):
diff --git a/addons/mrp_operations/report/mrp_workorder_analysis.py b/addons/mrp_operations/report/mrp_workorder_analysis.py
index e559f97fbed..545ce73656d 100644
--- a/addons/mrp_operations/report/mrp_workorder_analysis.py
+++ b/addons/mrp_operations/report/mrp_workorder_analysis.py
@@ -21,6 +21,7 @@
from osv import fields,osv
import tools
+import decimal_precision as dp
class mrp_workorder(osv.osv):
_name = "mrp.workorder"
@@ -34,7 +35,7 @@ class mrp_workorder(osv.osv):
'nbr': fields.integer('# of Lines', readonly=True),
'date': fields.date('Date', readonly=True),
'product_id': fields.many2one('product.product', 'Product', readonly=True),
- 'product_qty': fields.float('Product Qty', readonly=True),
+ 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product UoM'), readonly=True),
'state': fields.selection([('draft','Draft'),('startworking', 'In Progress'),('pause','Pause'),('cancel','Cancelled'),('done','Finished')],'State', readonly=True),
'total_hours': fields.float('Total Hours', readonly=True),
'total_cycles': fields.float('Total Cycles', readonly=True),
diff --git a/addons/mrp_subproduct/mrp_subproduct.py b/addons/mrp_subproduct/mrp_subproduct.py
index 130411987c1..3c4bb93e3e9 100644
--- a/addons/mrp_subproduct/mrp_subproduct.py
+++ b/addons/mrp_subproduct/mrp_subproduct.py
@@ -21,13 +21,14 @@
from osv import fields
from osv import osv
+import decimal_precision as dp
class mrp_subproduct(osv.osv):
_name = 'mrp.subproduct'
_description = 'Sub Product'
_columns={
'product_id': fields.many2one('product.product', 'Product', required=True),
- 'product_qty': fields.float('Product Qty', required=True),
+ 'product_qty': fields.float('Product Qty', digits_compute=dp.get_precision('Product UoM'), required=True),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
'subproduct_type': fields.selection([('fixed','Fixed'),('variable','Variable')], 'Quantity Type', required=True),
'bom_id': fields.many2one('mrp.bom', 'BoM'),
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 7382b1577e7..8e49520ba47 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -23,6 +23,7 @@ from osv import osv, fields
from tools.translate import _
import netsvc
import time
+import decimal_precision as dp
# Procurement
# ------------------------------------------------------------------
@@ -91,7 +92,7 @@ class procurement_order(osv.osv):
'date_planned': fields.datetime('Scheduled date', required=True),
'date_close': fields.datetime('Date Closed'),
'product_id': fields.many2one('product.product', 'Product', required=True, states={'draft':[('readonly',False)]}, readonly=True),
- 'product_qty': fields.float('Quantity', required=True, states={'draft':[('readonly',False)]}, readonly=True),
+ 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM'), required=True, states={'draft':[('readonly',False)]}, readonly=True),
'product_uom': fields.many2one('product.uom', 'Product UoM', required=True, states={'draft':[('readonly',False)]}, readonly=True),
'product_uos_qty': fields.float('UoS Quantity', states={'draft':[('readonly',False)]}, readonly=True),
'product_uos': fields.many2one('product.uom', 'Product UoS', states={'draft':[('readonly',False)]}, readonly=True),
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 5f5a36157ef..3c253fe2477 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -175,7 +175,7 @@
{'search_default_Current':1}
A project contains a set of tasks or issues that will be performed by your resources assigned to it. A project can be hierarchically structured, as a child of a Parent Project. This allows you to design large project structures with different phases spread over the project duration cycle. Each user can set his default project in his own preferences to automatically filter the tasks or issues he usually works on. If you choose to invoice the time spent on a project task, you can find project tasks to be invoiced in the billing section.
-
+
Templates of Projects
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 00d8556cf43..5e3d7781e6a 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -625,7 +625,7 @@ class purchase_order_line(osv.osv):
_columns = {
'name': fields.char('Description', size=256, required=True),
- 'product_qty': fields.float('Quantity', required=True, digits=(16,2)),
+ 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM'), required=True),
'date_planned': fields.date('Scheduled Date', required=True, select=True),
'taxes_id': fields.many2many('account.tax', 'purchase_order_taxe', 'ord_id', 'tax_id', 'Taxes'),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index 5549b044142..d619e3a82f5 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -25,6 +25,7 @@ import netsvc
from osv import fields,osv
from tools.translate import _
+import decimal_precision as dp
class purchase_requisition(osv.osv):
_name = "purchase.requisition"
@@ -93,7 +94,7 @@ class purchase_requisition_line(osv.osv):
_columns = {
'product_id': fields.many2one('product.product', 'Product' ),
'product_uom_id': fields.many2one('product.uom', 'Product UoM'),
- 'product_qty': fields.float('Quantity', digits=(16,2)),
+ 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')),
'requisition_id' : fields.many2one('purchase.requisition','Purchase Requisition', ondelete='cascade'),
'company_id': fields.many2one('res.company', 'Company', required=True),
}
diff --git a/addons/stock/wizard/stock_change_product_qty.py b/addons/stock/wizard/stock_change_product_qty.py
index f12eabd39e8..a2b4b6ebae4 100644
--- a/addons/stock/wizard/stock_change_product_qty.py
+++ b/addons/stock/wizard/stock_change_product_qty.py
@@ -20,6 +20,7 @@
##############################################################################
from osv import fields, osv
+import decimal_precision as dp
from tools.translate import _
import tools
@@ -28,7 +29,7 @@ class stock_change_product_qty(osv.osv_memory):
_description = "Change Product Quantity"
_columns = {
'product_id' : fields.many2one('product.product', 'Product'),
- 'new_quantity': fields.float('Quantity', required=True, help='This quantity is expressed in the Default UoM of the product.'),
+ 'new_quantity': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM'), required=True, help='This quantity is expressed in the Default UoM of the product.'),
'prodlot_id': fields.many2one('stock.production.lot', 'Production Lot', domain="[('product_id','=',product_id)]"),
'location_id': fields.many2one('stock.location', 'Location', required=True, domain="[('usage', '=', 'internal')]"),
}
diff --git a/addons/stock/wizard/stock_move.py b/addons/stock/wizard/stock_move.py
index 1a655878d8a..9ff0c96a3b8 100644
--- a/addons/stock/wizard/stock_move.py
+++ b/addons/stock/wizard/stock_move.py
@@ -29,7 +29,7 @@ class stock_move_consume(osv.osv_memory):
_columns = {
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
- 'product_qty': fields.float('Quantity', required=True),
+ 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM'), required=True),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
'location_id': fields.many2one('stock.location', 'Location', required=True)
}
diff --git a/addons/stock_planning/stock_planning.py b/addons/stock_planning/stock_planning.py
index 3ec992ecd0c..6ffb0140eb0 100644
--- a/addons/stock_planning/stock_planning.py
+++ b/addons/stock_planning/stock_planning.py
@@ -27,6 +27,7 @@ from osv import osv, fields
import netsvc
from tools.translate import _
import logging
+import decimal_precision as dp
_logger = logging.getLogger('mps')
@@ -80,8 +81,8 @@ class stock_sale_forecast(osv.osv):
help = 'Shows which period this forecast concerns.'),
'product_id': fields.many2one('product.product', 'Product', readonly=True, required=True, states={'draft':[('readonly',False)]}, \
help = 'Shows which product this forecast concerns.'),
- 'product_qty': fields.float('Forecast Quantity', required=True, readonly=True, states={'draft':[('readonly',False)]}, \
- help= 'Forecast Product quantity.'),
+ 'product_qty': fields.float('Forecast Quantity', digits_compute=dp.get_precision('Product UoM'), required=True, readonly=True, \
+ states={'draft':[('readonly',False)]}, help= 'Forecast Product quantity.'),
'product_amt': fields.float('Product Amount', readonly=True, states={'draft':[('readonly',False)]}, \
help='Forecast value which will be converted to Product Quantity according to prices.'),
'product_uom_categ': fields.many2one('product.uom.categ', 'Product UoM Category'), # Invisible field for product_uom domain