From 7882cb5e591cadb3c45f028016ba5d5bbf5d4c48 Mon Sep 17 00:00:00 2001 From: "ajay javiya (OpenERP)" Date: Thu, 2 Jan 2014 20:52:25 +0530 Subject: [PATCH] [IMP]: pricing template , [ADD] : optinal product [REM] : recommanded products sytem bzr revid: aja@tinyerp.com-20140102152225-agihyksva901z5yj --- addons/website_sale_quote/__openerp__.py | 2 +- addons/website_sale_quote/controllers/main.py | 16 ++ addons/website_sale_quote/models/order.py | 34 +++- addons/website_sale_quote/sale_quote_view.xml | 11 ++ .../static/src/js/sale_quote.js | 18 ++ .../views/website_sale_quote.xml | 171 +++++++++++------- 6 files changed, 184 insertions(+), 68 deletions(-) diff --git a/addons/website_sale_quote/__openerp__.py b/addons/website_sale_quote/__openerp__.py index 726bfa0bb47..03806300594 100644 --- a/addons/website_sale_quote/__openerp__.py +++ b/addons/website_sale_quote/__openerp__.py @@ -9,7 +9,7 @@ OpenERP Sale Quote Roller """, 'author': 'OpenERP SA', - 'depends': ['sale', 'portal_sale', 'mail'], + 'depends': ['website','sale', 'portal_sale', 'mail'], 'data': [ 'views/website_sale_quote.xml', 'sale_quote_view.xml', diff --git a/addons/website_sale_quote/controllers/main.py b/addons/website_sale_quote/controllers/main.py index 23ccc8ca1e4..98ca55dbedf 100644 --- a/addons/website_sale_quote/controllers/main.py +++ b/addons/website_sale_quote/controllers/main.py @@ -97,3 +97,19 @@ class sale_quote(http.Controller): 'template': quote, } return request.website.render('website_sale_quote.so_template', values) + + @website.route(['/quote/add_line'], type='json', auth="public") + def add(self, option=None, order=None, product=None, **post): + vals = {} + product_obj = request.registry.get('product.product').browse(request.cr, SUPERUSER_ID, int(product), context=request.context) + vals.update({ + 'price_unit': product_obj.list_price, + 'website_description': product_obj.website_description, + 'name': product_obj.name, + 'order_id': int(order), + 'product_id' : product_obj.id, + }) + new = request.registry.get('sale.order.line').create(request.cr, SUPERUSER_ID, vals, context=request.context) + request.registry.get('sale.option.line').write(request.cr, SUPERUSER_ID, [int(option)], {'add_to_line': True}, context=request.context) + return [new] + diff --git a/addons/website_sale_quote/models/order.py b/addons/website_sale_quote/models/order.py index 6c9424f4b3f..fe463c45a8f 100644 --- a/addons/website_sale_quote/models/order.py +++ b/addons/website_sale_quote/models/order.py @@ -33,11 +33,12 @@ class sale_quote_template(osv.osv): 'quote_line': fields.one2many('sale.quote.line', 'quote_id', 'Quote Template Lines'), 'note': fields.text('Terms and conditions'), } + def open_template(self, cr, uid, quote_id, context=None): return { 'type': 'ir.actions.act_url', 'target': 'self', - 'url': '/template/%d' % quote_id + 'url': '/template/%d' % quote_id[0] } @@ -86,6 +87,7 @@ class sale_order(osv.osv): 'access_token': fields.char('Security Token', size=256, required=True), 'template_id': fields.many2one('sale.quote.template', 'Quote Template'), 'website_description': fields.html('Description'), + 'options' : fields.one2many('sale.option.line', 'option_id', 'Optional Products Lines'), } _defaults = { 'access_token': lambda self, cr, uid, ctx={}: str(uuid.uuid4()) @@ -95,7 +97,7 @@ class sale_order(osv.osv): return { 'type': 'ir.actions.act_url', 'target': 'self', - 'url': '/quote/%d/%s' % (quote.id, quote.access_token) + 'url': '/quote/%s/%s' % (quote.id, quote.access_token) } def _get_sale_order_line(self, cr, uid, template_id, context=None): @@ -124,3 +126,31 @@ class sale_order(osv.osv): for line in order_line: products += line.product_id.product_tmpl_id.recommended_products(context=context) return products + +class sale_option_line(osv.osv): + _name = "sale.option.line" + _description = "Sale Options" + _columns = { + 'option_id': fields.many2one('sale.order', 'Sale Order Reference', required=True, ondelete='cascade', select=True), + 'name': fields.text('Description', required=True), + 'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], change_default=True), + 'website_description': fields.html('Line Description'), + 'price_unit': fields.float('Unit Price', required=True), + 'add_to_line': fields.boolean('Add to Line'), + } + + def on_change_product_id(self, cr, uid, ids, product, context=None): + vals = {} + product_obj = self.pool.get('product.product').browse(cr, uid, product, context=context) + vals.update({ + 'price_unit': product_obj.list_price, + 'website_description': product_obj.website_description, + 'name': product_obj.name, + }) + return {'value': vals} + +class product_template(osv.Model): + _inherit = "product.template" + _columns = { + 'website_description': fields.html('Description for the website'), + } diff --git a/addons/website_sale_quote/sale_quote_view.xml b/addons/website_sale_quote/sale_quote_view.xml index 2935b082bed..8fb9baaac0b 100644 --- a/addons/website_sale_quote/sale_quote_view.xml +++ b/addons/website_sale_quote/sale_quote_view.xml @@ -10,6 +10,17 @@