res.update(
self.onchange_template_id(
cr, uid, [], context['default_template_id'], res.get('composition_mode'),
- res.get('model'), res.get('res_id'), context=context
+ res.get('model'), res.get('res_id', context.get('active_id')), context=context
)['value']
)
return res
values['attachment_ids'].append(ir_attach_obj.create(cr, uid, data_attach, context=context))
else:
values = self.default_get(cr, uid, ['subject', 'body', 'email_from', 'email_to', 'email_cc', 'partner_to', 'reply_to', 'attachment_ids', 'mail_server_id'], context=context)
-
if values.get('body_html'):
values['body'] = values.pop('body_html')
return {'value': values}
# filter template values
fields = ['subject', 'body_html', 'email_from', 'email_to', 'partner_to', 'email_cc', 'reply_to', 'attachment_ids', 'attachments', 'mail_server_id']
values = dict.fromkeys(res_ids, False)
-
template_values = self.pool.get('email.template').generate_email_batch(cr, uid, template_id, res_ids, context=context)
for res_id in res_ids:
res_id_values = dict((field, template_values[res_id][field]) for field in fields if template_values[res_id].get(field))
--- /dev/null
+import controllers
+import models
--- /dev/null
+{
+ 'name': 'Quote Roller',
+ 'category': 'Website',
+ 'summary': 'Send Live Quotation',
+ 'version': '1.0',
+ 'description': """
+OpenERP Sale Quote Roller
+==================
+
+ """,
+ 'author': 'OpenERP SA',
+ 'depends': ['website_sale','website','product','portal_sale', 'mail'],
+ 'data': [
+ 'views/website_sale_quote.xml',
+ 'sale_quote_view.xml',
+ 'sale_quote_data.xml'
+ ],
+ 'demo': [
+ ],
+ 'qweb': ['static/src/xml/*.xml'],
+ 'installable': True,
+}
--- /dev/null
+import main
+
+# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:
--- /dev/null
+import random
+import uuid
+import simplejson
+
+import werkzeug.exceptions
+
+from openerp import SUPERUSER_ID
+from openerp.osv import osv
+from openerp.addons.web import http
+from openerp.addons.web.http import request
+from openerp.addons.website.models import website
+
+class sale_quote(http.Controller):
+
+ def get_quote(self, token):
+ quote_pool = request.registry.get('sale.quote')
+ quote_id = quote_pool.search(request.cr, SUPERUSER_ID, [('access_token', '=', token)], context=request.context)
+ return quote_id
+
+ @website.route(['/quote/<token>'], type='http', auth="public")
+ def view(self, token=None, **post):
+ values = {}
+ # http://hostname:8069/quote?id=
+ quote_pool = request.registry.get('sale.quote')
+ quotation = quote_pool.browse(request.cr, SUPERUSER_ID, self.get_quote(token))[0]
+ values.update({
+ 'quotation' : quotation,
+ })
+ return request.website.render('website_sale_quote.quotation', values)
+
+ @website.route(['/quote/<token>/accept'], type='http', auth="public")
+ def accept(self, token=None , **post):
+ values = {}
+ quotation = request.registry.get('sale.quote').write(request.cr, SUPERUSER_ID, self.get_quote(token), {'state': 'accept'})
+ return request.redirect("/quote/%s" % token)
+
+ @website.route(['/quote/<token>/decline'], type='http', auth="public")
+ def decline(self, token=None , **post):
+ values = {}
+ quotation = request.registry.get('sale.quote').write(request.cr, SUPERUSER_ID, self.get_quote(token), {'state': 'cancel'})
+ return request.redirect("/quote/%s" % token)
+
+ @website.route(['/quote/<token>/post'], type='http', auth="public")
+ def post(self, token=None, **post):
+ values = {}
+ if post.get('new_message'):
+ request.session.body = post.get('new_message')
+ if 'body' in request.session and request.session.body:
+ request.registry.get('sale.quote').message_post(request.cr, SUPERUSER_ID, self.get_quote(token),
+ body=request.session.body,
+ type='comment',
+ subtype='mt_comment',
+ )
+ request.session.body = False
+ return request.redirect("/quote/%s" % token)
+
+
--- /dev/null
+import order
--- /dev/null
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2013-Today OpenERP SA (<http://www.openerp.com>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import osv, fields
+import hashlib
+import time
+
+class sale_quote(osv.Model):
+ _name = "sale.quote"
+ _inherit = ['mail.thread', 'ir.needaction_mixin']
+ _description = "Sales Quotations"
+ _columns = {
+# 'template_id': fields.many2one('ir.ui.view', 'Template'),
+ 'order_id': fields.many2one('sale.order', 'Order', required=True),
+ 'state': fields.selection([
+ ('draft', 'Draft Quotation'),
+ ('sent', 'Quotation Sent'),
+ ('accept', 'Accept'),
+ ('cancel', 'Cancelled'),
+ ('done', 'Done'),
+ ], 'Status'),
+ 'to_email': fields.char('Customers Email'),
+ 'access_token':fields.char('Quotation Token', size=256),
+ }
+
+ def new_quotation_token(self, cr, uid, record_id):
+ db_uuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid')
+ quotation_token = hashlib.sha256('%s-%s-%s' % (time.time(), db_uuid, record_id)).hexdigest()
+ return self.write(cr, uid, [record_id],{'access_token': quotation_token} )
+
+ def create(self, cr, uid, vals, context=None):
+ if context is None:
+ context = {}
+ new_id = super(sale_quote, self).create(cr, uid, vals, context=context)
+ self.new_quotation_token(cr, uid, new_id)
+ return new_id
+
+
+class sale_order(osv.osv):
+ _inherit = 'sale.order'
+ _columns = {
+ 'quote_url': fields.char('URL'),
+ }
+
+# def action_quotation_send(self, cr, uid, ids, context=None):
+# '''
+# This function opens a window to compose an email, with the edi sale template message loaded by default
+# '''
+# data_pool = self.pool.get('ir.model.data')
+# sale_quote = self.pool.get('sale.quote')
+# try:
+# compose_form_id = data_pool.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form')[1]
+# except ValueError:
+# compose_form_id = False
+# model,template_id = data_pool.get_object_reference(cr, uid, 'website_sale_quote', "email_template_sale_quote")
+# ctx = dict(context)
+# for order in self.browse(cr, uid, ids, context):
+# if not order.quote_id:
+# new_id = sale_quote.create(cr, uid,{
+# 'state' : 'draft',
+# 'to_email': order.partner_id.email,
+# })
+# self.write(cr, uid, [order.id] ,{'quote_id': new_id}, context)
+# ctx.update({
+# 'default_model': 'sale.order',
+# 'default_res_id': order.id,
+# 'default_use_template': bool(template_id),
+# 'default_template_id': template_id,
+# 'default_composition_mode': 'comment',
+# 'mark_so_as_sent': True
+# })
+# return {
+# 'type': 'ir.actions.act_window',
+# 'view_type': 'form',
+# 'view_mode': 'form',
+# 'res_model': 'mail.compose.message',
+# 'views': [(compose_form_id, 'form')],
+# 'view_id': compose_form_id,
+# 'target': 'new',
+# 'context': ctx,
+# }
+
+ def action_quotation_send(self, cr, uid, ids, context=None):
+ quote = super(sale_order, self).action_quotation_send(cr, uid,ids, context)
+ sale_quote = self.pool.get('sale.quote')
+ for order in self.browse(cr, uid, ids, context):
+ q_id = sale_quote.search(cr, uid, [('order_id','=', order.id)], context=context)
+ if not q_id:
+ new_id = sale_quote.create(cr, uid,{
+ 'order_id' : order.id,
+ 'state' : 'draft',
+ 'to_email': order.partner_id.email,
+ })
+ self.write(cr, uid, order.id, {'quote_url': self.get_signup_url(cr, uid, [order.id], context)})
+ return quote
+
+ def get_signup_url(self, cr, uid, ids, context=None):
+ url = False
+ quote_id = self.pool.get('sale.quote').search(cr, uid, [('order_id','=', ids[0])], context=context)
+ for quote in self.pool.get('sale.quote').browse(cr, uid, quote_id, 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" % (base_url, quote.access_token)
+ return url
--- /dev/null
+<openerp>
+ <data>
+
+ <!--Email template -->
+ <record id="email_template_sale_quote" model="email.template">
+ <field name="name">Sales Quotation - Send by Email (Quote)</field>
+ <field name="email_from">${object.user_id.email or ''}</field>
+ <field name="subject">${object.company_id.name} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })</field>
+ <field name="partner_to">${object.partner_invoice_id.id}</field>
+ <field name="model_id" ref="website_sale_quote.model_sale_order"/>
+ <field name="auto_delete" eval="True"/>
+ <field name="body_html"><![CDATA[
+ <div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
+
+ <p>Hello ${object.partner_id.name},</p>
+
+ <p>Here is your ${object.state in ('draft', 'sent') and 'quotation' or 'order confirmation'} from ${object.company_id.name}: </p>
+
+ <% set signup_url = object.get_quote_url() %>
+ <p>
+ You can access this document and pay online via our Customer Portal:
+ </p>
+ <a style="display:block; width: 150px; height:20px; margin-left: 120px; color: #DDD; font-family: 'Lucida Grande', Helvetica, Arial, sans-serif; font-size: 13px; font-weight: bold; text-align: center; text-decoration: none !important; line-height: 1; padding: 5px 0px 0px 0px; background-color: #8E0000; border-radius: 5px 5px; background-repeat: repeat no-repeat;"
+ href="${signup_url}">View ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'}</a>
+ </div>
+ ]]></field>
+ </record>
+ </data>
+</openerp>
--- /dev/null
+<?xml version="1.0"?>
+<openerp>
+ <data>
+
+ <!-- Add payment options to sale.order and invoice forms -->
+ <record model="ir.ui.view" id="sale_order_form_quote">
+ <field name="name">sale.order.form.payment</field>
+ <field name="model">sale.order</field>
+ <field name="inherit_id" ref="sale.view_order_form"/>
+ <field name="arch" type="xml">
+ <notebook version="7.0" position="before">
+ <field name="quote_url"/>
+ </notebook>
+ </field>
+ </record>
+ </data>
+</openerp>
--- /dev/null
+body { padding-top:30px;
+}
+.widget .panel-body { padding:0px; }
+.widget .list-group { margin-bottom: 0; }
+.widget .panel-title { display:inline }
+.widget .label-info { float: right; }
+.widget li.list-group-item {border-radius: 0;border: 0;border-top: 1px solid #ddd;}
+.widget li.list-group-item:hover { background-color: rgba(86,61,124,.1); }
+.widget .mic-info { color: #666666;font-size: 11px; }
+.widget .action { margin-top:5px; }
+.widget .comment-text { font-size: 12px; }
+.widget .btn-block { border-top-left-radius:0px;border-top-right-radius:0px; }
+.oe_section { padding-top:40px; }
\ No newline at end of file
--- /dev/null
+openerp.base_calendar = function(instance) {
+var _t = instance.web._t;
+var QWeb = instance.web.qweb;
+instance.base_calendar = {}
+
+ instance.sale_quote.quotation = instance.web.Widget.extend({
+
+ init: function(parent, db, action, id, view, quotation) {
+ this._super();
+ this.db = db;
+ this.action = action;
+ this.id = id;
+ this.view = view;
+ this.quotation = quotation;
+ },
+ start: function() {
+ var self = this;
+ self.open_invitation_form(self.quotation);
+ },
+ open_quotation : function(quotation){
+ alert('aaa');
+ this.$el.html(QWeb.render('quotation_view', {'quotation': JSON.parse(quotation)}));
+ },
+ });
+
+ instance.sale_quote.view = function (db, action, id, view, quotation) {
+ instance.session.session_bind(instance.session.origin).done(function () {
+ new instance.sale_quote.quotation(null,db,action,id,view,quotation).appendTo($("body").addClass('openerp'));
+ });
+ }
+};
+//vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+ <template id="static_layout"><!DOCTYPE html>
+ <html t-att-lang="lang.replace('_', '-')"
+ t-att-data-editable="'1' if editable else None"
+ t-att-data-translatable="'1' if translatable else None"
+ t-att-data-view-xmlid="xmlid if editable else None"
+ t-att-data-main-object="repr(main_object) if editable else None"
+ t-att-data-report-margin-top="40"
+ t-att-data-report-innerheight="30">
+ <head>
+
+ <link rel='stylesheet' href='/report/static/src/css/report.css'/>
+
+ <t t-if="main_object and 'website_meta_title' in main_object">
+ <t t-set="title" t-value="main_object.website_meta_title"/>
+ </t>
+ <t t-if="not title and main_object and 'name' in main_object">
+ <t t-set="additional_title" t-value="main_object.name"/>
+ </t>
+ <t t-if="not title">
+ <t t-set="title"><t t-raw="res_company.name"/><t t-if="additional_title"> - <t t-raw="additional_title"/></t></t>
+ </t>
+ <title><t t-esc="title"/></title>
+ <meta name="openerp.company" t-att-value="res_company.name"/>
+ <meta name="description" t-att-value="main_object and 'website_meta_description' in main_object
+ and main_object.website_meta_description or website_meta_description"/>
+ <meta name="keywords" t-att-value="main_object and 'website_meta_keywords' in main_object
+ and main_object.website_meta_keywords or website_meta_keywords"/>
+
+ <!-- Load stylesheets before scripts to avoid blocking -->
+ <link rel='stylesheet' href='/web/static/lib/fontawesome/css/font-awesome.css'/>
+ <t t-if="editable">
+ <link rel='stylesheet' href='/website/static/src/css/snippets.css'/>
+ <link rel='stylesheet' href='/website/static/src/css/editor.css'/>
+ <link rel='stylesheet' href='/website/static/lib/bootstrap-tour/bootstrap-tour.css'/>
+ </t>
+ <t t-call="website.theme"/>
+
+
+ <script type="text/javascript" src="/web/static/lib/es5-shim/es5-shim.min.js"></script>
+ <script type="text/javascript" src="/web/static/lib/underscore/underscore.js"></script>
+ <script type="text/javascript" src="/web/static/lib/underscore.string/lib/underscore.string.js"></script>
+ <script type="text/javascript" src="/web/static/lib/jquery/jquery.js"></script>
+ <script type="text/javascript" src="/website/static/lib/bootstrap/js/bootstrap.js"></script>
+ <script type="text/javascript">
+ // Bootstrap and jQuery UI conflicts
+ $.fn.bstooltip = $.fn.tooltip;
+ $.fn.bsbutton = $.fn.button;
+ </script>
+
+ <script type="text/javascript" src="/web/static/lib/qweb/qweb2.js"></script>
+ <script type="text/javascript" src="/web/static/src/js/openerpframework.js"></script>
+
+ <script type="text/javascript" src="/website/static/src/js/website.js"></script>
+ <script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.snippets.animation.js"></script>
+
+ <t t-if="editable" id="editable_scripts_hook">
+ <link rel="stylesheet" href="/select2/static/lib/select2/select2.css"/>
+ <link rel="stylesheet" href="/website/static/lib/select2-bootstrap-css/select2-bootstrap.css"/>
+ <link rel='stylesheet' href="/web/static/lib/jquery.ui/css/smoothness/jquery-ui-1.9.1.custom.css"/>
+
+ <script type="text/javascript" src="/select2/static/lib/select2/select2.js"></script>
+ <script type="text/javascript" src="/web/static/lib/ckeditor/ckeditor.js"></script>
+ <script type="text/javascript" src="/website/static/lib/bootstrap-tour/bootstrap-tour.js"></script>
+ <script t-if="not translatable" type="text/javascript" src="/website/static/lib/ace/ace.js"></script>
+ <script type="text/javascript" src="/website/static/lib/vkbeautify/vkbeautify.0.99.00.beta.js"></script>
+ <script type="text/javascript" src="/web/static/lib/jquery.ui/js/jquery-ui-1.9.1.custom.js"></script>
+ <!-- mutation observers shim backed by mutation events (8 < IE < 11, Safari < 6, FF < 14, Chrome < 17) -->
+ <script type="text/javascript" src="/website/static/lib//jquery.mjs.nestedSortable/jquery.mjs.nestedSortable.js"></script>
+ <script type="text/javascript" src="/website/static/lib/MutationObservers/test/sidetable.js"></script>
+ <script type="text/javascript" src='/website/static/lib/nearest/jquery.nearest.js'></script>
+ <script type="text/javascript" src="/website/static/lib/MutationObservers/MutationObserver.js"></script>
+
+ <script type="text/javascript" src="/website/static/src/js/website.editor.js"></script>
+ <script type="text/javascript" src="/website/static/src/js/website.menu.js"></script>
+ <script type="text/javascript" src="/website/static/src/js/website.mobile.js"></script>
+ <script type="text/javascript" src="/website/static/src/js/website.seo.js"></script>
+ <script type="text/javascript" src="/website/static/src/js/website.tour.js"></script>
+ <script type="text/javascript" src="/website/static/src/js/website.tour.banner.js"></script>
+ <script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.snippets.editor.js"></script>
+ <script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.ace.js"></script>
+ <script t-if="translatable" type="text/javascript" src="/website/static/src/js/website.translator.js"></script>
+ </t>
+ </head>
+ <body>
+ <div id="wrapwrap">
+ <t t-raw="0" />
+ </div>
+ </body>
+ </html>
+ </template>
+ <template id="quotation" name="Your Quotation">
+ <t t-call="website_sale_quote.static_layout">
+ <div class="col-xs-12 col-md-8 tab-content">
+ <section id="main" class="tab-pane active oe_section">
+ <div class="container panel panel-default">
+ <div class="row panel-body">
+ <div class="text-center">
+ <h1>What does Quickstart cover ?</h1>
+ </div>
+ <div>
+ <p class="lead"><small>1. The OpenERP Enterprise Contract (1 year coverage): unlimited bugfix, security alerts, migration</small></p>
+
+ <p class="lead"><small>2. The “Get on Board” Hands-on Training (choice between our core modules)</small></p>
+
+ <p class="lead"><small>3. On-site consulting (minimum 2 days)</small></p>
+
+ </div>
+ <div class="text-center">
+ <h1>How does it work?</h1>
+ </div>
+ <div>
+ <p class="lead"><small>1. OpenERP qualifies your main business needs</small></p>
+
+ <p class="lead"><small>2. You get a tailored demo</small></p>
+
+ <p class="lead"><small>3. We train you on your chosen module
+ </small></p>
+ <p class="lead"><small>4. We deploy your chosen module with a dedicated functional consultant</small></p>
+ <p class="lead"><small>5. We get you involved in the deployment of OpenERP in your company</small></p>
+
+ </div>
+ <p class="lead">
+ <small>
+ The QuickStart offer simply enables any SME to start using OpenERP in just a few days. Since we launched this approach, we already deployed 50 customers in production. <a href="http://v6.openerp.com/node/1390">Check out some of the <strong>testimonials</strong>!</a>
+ </small>
+ </p>
+ </div>
+ </div>
+ </section>
+ <section id="quote" class="tab-pane oe_section">
+ <div class="well">
+ <div class="row">
+ <div class="col-xs-6 col-sm-6 col-md-6">
+ <address>
+ <strong t-field="quotation.order_id.partner_id.name"/>
+ <br/>
+ <t t-esc="quotation.order_id.partner_id.street"/>
+ <br/>
+ <t t-esc="quotation.order_id.partner_id.city"/>, <t t-esc="quotation.order_id.partner_id.state_id.name"/> <t t-esc="quotation.order_id.partner_id.zip"/>
+ <br/>
+ <abbr title="Phone">P:</abbr> <t t-esc="quotation.order_id.partner_id.phone"/>
+ </address>
+ </div>
+ <div class="col-xs-6 col-sm-6 col-md-6 text-right">
+ <p>
+ <em>Date: <t t-esc="quotation.order_id.date_order"/></em>
+ </p>
+ <p>
+ <em>Quotation #: <t t-esc="quotation.order_id.name"/></em>
+ </p>
+ </div>
+ </div>
+ <div class="row">
+ <div class="text-center">
+ <h1>Quotation</h1>
+ </div>
+ <table class="table table-hover">
+ <thead>
+ <tr>
+ <th>Product</th>
+ <th>Description</th>
+ <th>#</th>
+ <th class="text-center">Unit Price</th>
+ <th class="text-center">Subtotal</th>
+ </tr>
+ </thead>
+ <tbody>
+ <t t-foreach="quotation.order_id.order_line" t-as="line">
+ <tr>
+ <td class="col-md-9"><em><t t-esc="line.product_id.name"/></em></td>
+ <td class="col-md-9"><em><t t-esc="line.name"/></em></td>
+ <td class="col-md-1" style="text-align: center"><t t-esc="line.product_uom_qty"/></td>
+ <td class="col-md-1 text-center"><t t-esc="line.price_unit"/></td>
+ <td class="col-md-1 text-center"><t t-esc="line.price_subtotal"/></td>
+ </tr>
+ </t>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td class="text-right">
+ <p>
+ <strong>Untaxed Amount: </strong>
+ </p>
+ <p>
+ <strong>Tax: </strong>
+ </p></td>
+ <td class="text-center">
+ <p>
+ <strong t-field="quotation.order_id.amount_untaxed"
+ t-field-options='{
+ "widget": "monetary",
+ "display_currency": "website.pricelist_id.currency_id"
+ }'></strong>
+ </p>
+ <p>
+<!-- <strong><t t-esc="quotation.amount_taxed"/></strong>-->
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td class="text-right"><strong>Total: </strong></td>
+ <td class="text-center text-success">
+ <strong
+ t-field="quotation.order_id.amount_total"
+ t-field-options='{"widget": "monetary",
+ "display_currency":"website.pricelist_id.currency_id"
+ }'></strong>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="text-center">
+ <a type="submit" t-if="quotation.state != 'accept'" t-href="/quote/#{ quotation.access_token }/accept" class="btn btn-labeled btn-success"><span class="btn-label"><i class="glyphicon glyphicon-ok"></i></span>Accept</a>
+ <a type="submit" t-if="quotation.state != 'cancel'" t-href="/quote/#{ quotation.access_token }/decline" class="btn btn-labeled btn-danger"><span class="btn-label"><i class="glyphicon glyphicon-remove"></i></span>Decline</a>
+ </div>
+ </div>
+ </div>
+ </section>
+ <section id="accouting" class="tab-pane oe_section">
+ <div class="container">
+ <div class="text-center">
+ <h1>What am i looking for ?</h1>
+ </div>
+ <div class="media">
+ <a class="pull-right" href="#">
+ <img class="media-object" src="/crm/static/description/icon.png" alt="..."/>
+ </a>
+ <div class="media-body">
+ <h4 class="media-heading">Customer Relationship Management</h4>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Manage my leads</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Optimize my Sales Cycle</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Create customize dashboard</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Improve my Sales reporting</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Communicate with customers and colleagues</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Controll and manage my sales forcastes</i></small></p>
+ </div>
+ </div>
+ <div class="media">
+ <a class="pull-left" href="#">
+ <img class="media-object" src="/hr_timesheet_sheet/static/description/icon.png" alt="..."/>
+ </a>
+ <div class="media-body pull-right">
+ <h4 class="media-heading">Service Management</h4>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Manage my customer contracts</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Optimize and analyze my time management</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Manage , analysis and trace my issue</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Create customize dashboard</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Perform project management</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Trace my invoices</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Manage my helpdesk</i></small></p>
+ </div>
+ </div>
+ </div>
+ </section>
+ <section id="sales" class="tab-pane oe_section">
+ <div class="container">
+ <div class="text-center">
+ <h1>What's in it for me ?</h1>
+ </div>
+ <div>
+ <h4>The OpenERP Enterprise contract(1 year) convering</h4>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Unlimited Bugfix service</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil">"One Click" Update</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Functional Support</i></small></p>
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Migration</i></small></p>
+
+ <p class="lead"><small><i class="glyphicon glyphicon-pencil"> Online Hosting</i></small></p>
+ </div>
+ </div>
+ </section>
+ <div class="panel panel-default widget">
+ <div class="panel-heading">
+ <span class="glyphicon glyphicon-comment"></span>
+ <h3 class="panel-title">Recent Comments</h3>
+ </div>
+ <div class="panel-body">
+ <ul class="list-group">
+ <t t-foreach="quotation.message_ids" t-as="message">
+ <li class="list-group-item">
+ <div class="row">
+ <div class="col-xs-2 col-md-1">
+ <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>
+ <a href="http://www.jquery2dotnet.com/2013/10/google-style-login-page-desing-usign.html"/>
+ <t t-raw="message.body"/>
+ <div class="mic-info">
+ By: <a href="#"><t t-esc="message.author_id.name"/></a> on <t t-esc="message.date"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </li>
+ </t>
+ </ul>
+ </div>
+ </div>
+ <form id="post" accept-charset="UTF-8" method="POST" t-att-action="'/quote/%%s/post#post' %% quotation.access_token">
+ <textarea rows="3" id="new_message" name="new_message" placeholder="Your Comment....." class="form-control span7"> </textarea>
+ <button type="submit" t-att-id="quotation.access_token" class="btn btn-info">Post your Comment</button>
+ </form>
+ </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="#main" data-toggle="tab"><i class="icon-chevron-right"></i> Introduction</a></li>
+ <li ><a href="#crm" data-toggle="tab"><i class="icon-chevron-right"></i> CRM and Marketing</a></li>
+ <li><a href="#sales" data-toggle="tab"><i class="icon-chevron-right"></i> Sales and Warehouse</a></li>
+ <li ><a href="#crm" data-toggle="tab"><i class="icon-chevron-right"></i> Manufacturing</a></li>
+ <li><a href="#accouting" data-toggle="tab"><i class="icon-chevron-right"></i> Accounting</a></li>
+ <li><a href="#quote" data-toggle="tab"><i class="icon-chevron-right"></i> Quotation</a></li>
+ </ul>
+ </div></t>
+ </template>
+ </data>
+</openerp>