Hello All,
         I would like to share with you how to create a 
Qweb report in odoo [OpenERP].let we go stap by stap to 
create Qweb report in odoo [OpenERP].
What is Qweb
Report ??
Qweb Report  is the newest version of
the Odoo reporting Format and its uses the bootstrap css classes and
Qweb Template Engine for Make Quick Report Design in Odoo. 
About
Bootstrap  :
  Bootstrap is a free collection of
tools for creating websites and web applications.It contains HTML and CSS-based design
templates for typography, forms, buttons, navigation and other
interface components, as well as optional JavaScript extensions 
Expressions
used in Odoo report templates :
    There are some magic variables used
in the report rendering. The main ones are the following: 
docs 
           records for the current report 
doc_ids 
           list of ids for the docs records 
doc_model 
          model for the docs records 
time 
          a reference to time from the Python
standard library 
translate_doc 
 
    a function to translate a part of a
report. It must be used as follow: 
    <t t-foreach="doc_ids"
t-as="doc_id"> 
        <t
t-raw="translate_doc(doc_id, doc_model, 'partner_id.lang',
account.report_invoice_document')"/> 
    </t> 
user 
        res.user record for the user
printing the report 
res_company 
         record the current user‘s company
Custom Report 
A generic report use the default
rendering context, containing the magic variables as explained
before. If you want a new rendering context containing anything you
want to process your data Odoo AbstractModel, a custom module is
needed. These reports are called “particular report”. 
For a particular report, you have to
write an Odoo Model containing a render_html method. Classically,
this method returns a call to the original QWeb render with a custom
rendering context. 
from openerp import api, models 
class
ParticularReport(models.AbstractModel): 
    _name =
'report.<<module.reportname>>' 
    @api.multi 
    def render_html(self, data=None): 
        report_obj = self.env['report']
        report =
report_obj._get_report_from_name('<<module.reportname>>')
        docargs = { 
            'doc_ids': ids, 
            'doc_model': report.model, 
            'docs':
self.env[report.model].browse(ids), 
        } 
        return
report_obj.render('<<module.reportname>>', docargs) 
Create Report  in Qweb odoo [OpenERP]
Steps to create in Following Ways :: 
STEP 1 :: 
Create View File For Rendring the Qweb
in Odoo
the view file it self uses the the
Bootstrap classes for designing the Qweb Report.
Create custom module in odoo and then  Navigate 
YOUR MODULE NAME/View/yourview_file.xml
And also add the Entry of xml in  the
__openerp__.py file 
STEP 2 :: 
Create Python class for report in
report Dir 
import time 
from openerp.report import report_sxw 
from openerp.osv import osv 
class
your_class_name(report_sxw.rml_parse): 
    def get_lines(self, user,objects): 
        lines=[] 
        for obj in objects: 
            if user.id==obj.user_id.id:
                lines.append(obj) 
        return lines 
What ever function Which You want to
access in the Qweb Template which are define in the class 
We must  have to add the Entry in it
constructor like this
 
    def __init__(self, cr, uid,
name, context): 
        super(your_class_name,
self).__init__(cr, uid, name, context) 
        self.net_total=0.0 
        self.localcontext.update({ 
            'time': time, 
            'get_lines':
self.get_lines, 
Add the Entry For the report class
which is inherited the osv.AbstractModel object 
class
report_your_class_name(osv.AbstractModel): 
    _name =
'report.Your_Module_name.report_reportname' 
    _inherit = 'report.abstract_report'
    _template =
'Your_Module_name.report_reportname' 
    _wrapped_report_class
=your_class_name
Navigate : 
YOUR MODULE NAME/report/reportclass.py 
And also add the Entry in  the
__init__.py file 
STEP 3 :: 
Add the Menu Action for Print The
Report 
YOUR MODULE NAME/report_file.xml 
        <report 
           
id="action_report_report_id" 
            string="String to
Display in Menu" 
            model="your_model"
            report_type="qweb-pdf"
           
name="your_module_name.report_your_reportid" 
           
file="your_module_name.report_yourreportid" 
        />
And also add the Entry of xml in  the
__openerp__.py file 
Special
function :: 
Hear In odoo use the special widget for
print the currency symbol, 
add the company address,partner address
and many more 
like this.. 
  <div class="row"> 
                <div class="col-xs-5
col-xs-offset-7"> 
                    <address
t-field="o.partner_id" 
                       
t-field-options='{"widget": "contact", "fields":
["address", "name"], "no_marker":
true}' /> 
                    <span
t-field="o.partner_id.vat"/> 
                </div> 
   </div> 
   hear t-field-options attribute use
the widget to print the partner detail in Odoo 
   like name,address,street,country
etc... 
   
   Same things for the currency
symbol 
    <td class="text-right">
        <span
t-field="o.amount_untaxed" t-field-options='{"widget":
"monetary", "display_currency":
"o.currency_id"}'/> 
    </td> 
Thanks,
Mayur Maheshwari (OpenERP/odoo)
Skype: mayur_maheshwari1