[IMP][ADD]: template for sale.quote.template , to allow create a new template using cms
bzr revid: aja@tinyerp.com-20131216132346-4lw4t6whsqplfgwq
This commit is contained in:
parent
1e17cd0fc8
commit
cacba10893
|
@ -13,7 +13,9 @@ OpenERP Sale Quote Roller
|
||||||
'data': [
|
'data': [
|
||||||
'views/website_sale_quote.xml',
|
'views/website_sale_quote.xml',
|
||||||
'sale_quote_view.xml',
|
'sale_quote_view.xml',
|
||||||
'sale_quote_data.xml'
|
'sale_quote_data.xml',
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
'security/website_sale_quote.xml',
|
||||||
],
|
],
|
||||||
'demo': [
|
'demo': [
|
||||||
'sale_quote_demo.xml'
|
'sale_quote_demo.xml'
|
||||||
|
|
|
@ -91,3 +91,11 @@ class sale_quote(http.Controller):
|
||||||
quantity = order_line_val['product_uom_qty'] + number
|
quantity = order_line_val['product_uom_qty'] + number
|
||||||
order_line_obj.write(request.cr, SUPERUSER_ID, [int(line_id)], {'product_uom_qty': (quantity)}, context=request.context)
|
order_line_obj.write(request.cr, SUPERUSER_ID, [int(line_id)], {'product_uom_qty': (quantity)}, context=request.context)
|
||||||
return quantity
|
return quantity
|
||||||
|
|
||||||
|
@website.route(["/template/<model('sale.quote.template'):quote>"], type='http', auth="public")
|
||||||
|
def template_view(self, quote=None, **post):
|
||||||
|
values = {}
|
||||||
|
values.update({
|
||||||
|
'template': quote,
|
||||||
|
})
|
||||||
|
return request.website.render('website_sale_quote.so_template', values)
|
||||||
|
|
|
@ -32,8 +32,18 @@ class sale_quote_template(osv.osv):
|
||||||
'website_description': fields.html('Description'),
|
'website_description': fields.html('Description'),
|
||||||
'quote_line': fields.one2many('sale.quote.line', 'quote_id', 'Quote Template Lines'),
|
'quote_line': fields.one2many('sale.quote.line', 'quote_id', 'Quote Template Lines'),
|
||||||
'note': fields.text('Terms and conditions'),
|
'note': fields.text('Terms and conditions'),
|
||||||
|
'template_url': fields.char('URL', readonly=True),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _get_signup_url(self, cr, uid, quote_id, context=None):
|
||||||
|
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context)
|
||||||
|
url = "%s/template/%s" % (base_url, quote_id)
|
||||||
|
return url
|
||||||
|
|
||||||
|
def create(self, cr, uid, ids, context=None):
|
||||||
|
new_id = super(sale_quote_template, self).create(cr, uid, ids, context)
|
||||||
|
self.write(cr, uid, new_id, {'template_url':self._get_signup_url(cr, uid, new_id, context=context)})
|
||||||
|
return new_id
|
||||||
|
|
||||||
class sale_quote_line(osv.osv):
|
class sale_quote_line(osv.osv):
|
||||||
_name = "sale.quote.line"
|
_name = "sale.quote.line"
|
||||||
|
@ -87,27 +97,27 @@ class sale_order(osv.osv):
|
||||||
'website_description': fields.html('Description'),
|
'website_description': fields.html('Description'),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_token(self, cr, uid, oder_id, context=None):
|
def _get_token(self, cr, uid, ids, context=None):
|
||||||
"""
|
"""
|
||||||
Generate token for sale order on action_quotation_send , send it to customer.
|
Generate token for sale order on action_quotation_send , send it to customer.
|
||||||
"""
|
"""
|
||||||
db_uuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid')
|
db_uuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid')
|
||||||
return hashlib.sha256('%s-%s-%s' % (time.time(), db_uuid, oder_id)).hexdigest()
|
for id in ids:
|
||||||
|
token = hashlib.sha256('%s-%s-%s' % (time.time(), db_uuid, id)).hexdigest()
|
||||||
|
return token
|
||||||
|
|
||||||
def _get_signup_url(self, cr, uid, order_id=False, token=False, context=None):
|
def _get_signup_url(self, cr, uid, ids, token=False, context=None):
|
||||||
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context)
|
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context)
|
||||||
url = "%s/quote/%s/%s" % (base_url, order_id, token)
|
for id in ids:
|
||||||
|
url = "%s/quote/%s/%s" % (base_url, id, token)
|
||||||
return url
|
return url
|
||||||
|
|
||||||
def create(self, cr, uid, vals, context=None):
|
|
||||||
new_id = super(sale_order, self).create(cr, uid, vals, context=context)
|
|
||||||
token = self._get_token(cr, uid, new_id, context)
|
|
||||||
url = self._get_signup_url(cr, uid, new_id, token, context)
|
|
||||||
self.write(cr, uid, [new_id], {'access_token': token,'quote_url': url})
|
|
||||||
return new_id
|
|
||||||
|
|
||||||
def action_quotation_send(self, cr, uid, ids, context=None):
|
def action_quotation_send(self, cr, uid, ids, context=None):
|
||||||
self._create_portal_user(cr, uid, ids, context=context)
|
self._create_portal_user(cr, uid, ids, context=context)
|
||||||
|
token = self._get_token(cr, uid, ids, context)
|
||||||
|
url = self._get_signup_url(cr, uid, ids, token, context)
|
||||||
|
self.write(cr, uid, ids, {'access_token': token,'quote_url': url})
|
||||||
res = super(sale_order, self).action_quotation_send(cr, uid, ids, context=context)
|
res = super(sale_order, self).action_quotation_send(cr, uid, ids, context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Sale Quotation Template" version="7.0">
|
<form string="Sale Quotation Template" version="7.0">
|
||||||
|
<div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('template_url', '=', False)]}">
|
||||||
|
<field name="template_url" widget="url"/>
|
||||||
|
</div>
|
||||||
<sheet>
|
<sheet>
|
||||||
<h1>
|
<h1>
|
||||||
<label string="Quotation Template"/>
|
<label string="Quotation Template"/>
|
||||||
|
|
|
@ -197,7 +197,7 @@
|
||||||
<t t-foreach="quotation.message_ids" t-as="message">
|
<t t-foreach="quotation.message_ids" t-as="message">
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-2 col-md-1">
|
<div class="col-xs-2 col-md-1" t-if="message.author_id.image_small">
|
||||||
<img t-att-src="'data:image/png;base64,' + message.author_id.image_small" class="img-circle img-responsive" alt="" /></div>
|
<img t-att-src="'data:image/png;base64,' + message.author_id.image_small" class="img-circle img-responsive" alt="" /></div>
|
||||||
<div class="col-xs-10 col-md-11">
|
<div class="col-xs-10 col-md-11">
|
||||||
<div>
|
<div>
|
||||||
|
@ -274,5 +274,38 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template id="so_template" name="SO Template">
|
||||||
|
<t t-call="website_sale_quote.static_layout">
|
||||||
|
<div class="col-xs-12 col-md-8 tab-content">
|
||||||
|
<section id="template_introduction" class="tab-pane active oe_section jumbotron" t-field="template.website_description">
|
||||||
|
</section>
|
||||||
|
<t t-foreach="template.quote_line" t-as="line">
|
||||||
|
<section class="tab-pane oe_section jumbotron" t-att-id="line.id">
|
||||||
|
<div t-field="line.website_description" class="oe_structure"/>
|
||||||
|
</section>
|
||||||
|
</t>
|
||||||
|
<section id="templateterms" class="tab-pane oe_section">
|
||||||
|
<div class="container panel panel-default tab-pane oe_section">
|
||||||
|
<div class="row panel-body">
|
||||||
|
<div class="text-center">
|
||||||
|
<h2><strong>Terms & Conditions</strong></h2>
|
||||||
|
<p class="lead" t-field="template.note"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-6 col-md-4 sidebar oe_section" id="sidebar">
|
||||||
|
<ul class="nav nav-pills nav-stacked" data-spy="affix">
|
||||||
|
<li class="active"><a href="#template_introduction" data-toggle="tab"><i class="icon-chevron-right"></i> Introduction</a></li>
|
||||||
|
<t t-foreach="template.quote_line" t-as="line">
|
||||||
|
<li><a t-att-href="'#%s'% line.id" data-toggle="tab"><i class="icon-chevron-right"></i><t t-raw="line.product_id.name_template"/> </a></li>
|
||||||
|
</t>
|
||||||
|
<li><a href="#templateterms" data-toggle="tab"><i class="icon-chevron-right"></i> Terms & Conditions</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
</template>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
Loading…
Reference in New Issue