#
##############################################################################
-from osv import fields, osv
-import pooler
-from tools.translate import _
+import logging
+
+from openerp.osv import fields, osv
+from openerp import pooler
+from openerp.tools.translate import _
+
+_logger = logging.getLogger(__name__)
class sale_configuration(osv.osv_memory):
_inherit = 'sale.config.settings'
_columns = {
- 'group_invoice_so_lines': fields.boolean('Generate invoices based on the sale order lines',
+ 'group_invoice_so_lines': fields.boolean('Generate invoices based on the sales order lines',
implied_group='sale.group_invoice_so_lines',
- help="To allow your salesman to make invoices for sale order lines using the menu 'Lines to Invoice'."),
+ help="To allow your salesman to make invoices for sales order lines using the menu 'Lines to Invoice'."),
'timesheet': fields.boolean('Prepare invoices based on timesheets',
help = """For modifying account analytic view to show important data to project manager of services companies.
You can also view the report of account analytic summary user-wise as well as month wise.
'group_sale_pricelist':fields.boolean("Use pricelists to adapt your price per customers",
implied_group='product.group_sale_pricelist',
help="""Allows to manage different prices based on rules per category of customers.
- Example: 10% for retailers, promotion of 5 EUR on this product, etc."""),
+Example: 10% for retailers, promotion of 5 EUR on this product, etc."""),
'group_uom':fields.boolean("Allow using different units of measures",
implied_group='product.group_uom',
help="""Allows you to select and maintain different units of measure for products."""),
- 'group_sale_delivery_address': fields.boolean("Allow a different address for delivery and invoicing ",
- implied_group='sale.group_delivery_invoice_address',
- help="Allows you to specify different delivery and invoice addresses on a sale order."),
- 'group_discount_per_so_line': fields.boolean("Allow setting a discount on the sale order lines",
+ 'group_discount_per_so_line': fields.boolean("Allow setting a discount on the sales order lines",
implied_group='sale.group_discount_per_so_line',
- help="Allows you to apply some discount per sale order line."),
+ help="Allows you to apply some discount per sales order line."),
'module_warning': fields.boolean("Allow configuring alerts by customer or products",
- help="""Allow to configure warnings on products and trigger them when a user wants to sale a given product or a given customer.
- Example: Product: this product is deprecated, do not purchase more than 5.
- Supplier: don't forget to ask for an express delivery."""),
+ help="""Allow to configure notification on products and trigger them when a user wants to sale a given product or a given customer.
+Example: Product: this product is deprecated, do not purchase more than 5.
+ Supplier: don't forget to ask for an express delivery."""),
'module_sale_margin': fields.boolean("Display margins on sales orders",
help="""This adds the 'Margin' on sales order.
This gives the profitability by calculating the difference between the Unit Price and Cost Price.
But the possibility to change these values is still available.
This installs the module analytic_user_function."""),
'module_project': fields.boolean("Project"),
- 'module_sale_stock': fields.boolean("Sale and Warehouse Management",
+ 'module_sale_stock': fields.boolean("Trigger delivery orders automatically from sales orders",
help="""Allows you to Make Quotation, Sale Order using different Order policy and Manage Related Stock.
This installs the module sale_stock."""),
}
user = self.pool.get('res.users').browse(cr, uid, uid, context)
res['time_unit'] = user.company_id.project_time_mode_id.id
else:
- product = ir_model_data.get_object(cr, uid, 'product', 'product_product_consultant')
- res['time_unit'] = product.uom_id.id
+ try:
+ product = ir_model_data.get_object(cr, uid, 'product', 'product_product_consultant')
+ res['time_unit'] = product.uom_id.id
+ except ValueError:
+ # keep default value in that case
+ _logger.warning("Product with xml_id 'product.product_product_consultant' not found")
return res
def _get_default_time_unit(self, cr, uid, context=None):
wizard = self.browse(cr, uid, ids)[0]
if wizard.time_unit:
- product = ir_model_data.get_object(cr, uid, 'product', 'product_product_consultant')
- product.write({'uom_id': wizard.time_unit.id, 'uom_po_id': wizard.time_unit.id})
+ try:
+ product = ir_model_data.get_object(cr, uid, 'product', 'product_product_consultant')
+ product.write({'uom_id': wizard.time_unit.id, 'uom_po_id': wizard.time_unit.id})
+ except ValueError:
+ _logger.warning("Product with xml_id 'product.product_product_consultant' not found, UoMs not updated!")
if wizard.module_project and wizard.time_unit:
user = self.pool.get('res.users').browse(cr, uid, uid, context)
user.company_id.write({'project_time_mode_id': wizard.time_unit.id})
-
return {}
def onchange_task_work(self, cr, uid, ids, task_work, context=None):
help="""This allows install module sale_analytic_plans."""),
'group_analytic_account_for_sales': fields.boolean('Analytic accounting for sales',
implied_group='sale.group_analytic_accounting',
- help="Allows you to specify an analytic account on sale orders."),
+ help="Allows you to specify an analytic account on sales orders."),
}
def onchange_sale_analytic_plans(self, cr, uid, ids, module_sale_analytic_plans, context=None):
""" change group_analytic_account_for_sales following module_sale_analytic_plans """
+ if not module_sale_analytic_plans:
+ return {}
return {'value': {'group_analytic_account_for_sales': module_sale_analytic_plans}}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: