Book Image

Odoo 12 Development Essentials - Fourth Edition

By : Daniel Reis
Book Image

Odoo 12 Development Essentials - Fourth Edition

By: Daniel Reis

Overview of this book

Odoo is one of the best platforms for open source ERP and CRM. Its latest version, Odoo 12, brings with it new features and updates in Python packages to develop more customizable applications with additional cloud capabilities. The book begins by covering the development essentials for building business applications. You will start your journey by learning how to install and configure Odoo, and then transition from having no specific knowledge of Odoo to being ready for application development. You will develop your first Odoo application and understand topics such as models and views. Odoo 12 Development Essentials will also guide you in using server APIs to add business logic, helping you lay a solid foundation for advanced topics. As you progress through the chapters, you will be equipped to build and customize your applications and explore the new features in Odoo 12, such as cloud integration, to scale your business applications. You will get insights into building business logic and integrating various APIs into your application. By the end of the book, you will be able to build a business application from scratch by using the latest version of Odoo.
Table of Contents (22 chapters)
Title Page
Packt Upsell
Foreword
Contributors
Preface
Index

Reports based on custom SQL


The report we built was based on a regular recordset. However, in some cases we need to transform or aggregate data in ways that are not easy or desirable to process in a QWeb template.

One approach for this is to write a SQL query to build the dataset we need, expose those results through a special model, and have our report work based on a recordset.

To showcase this, we will create a reports/library_book_report.py file with the following code:

from odoo import models, fields 
 
class BookReport(models.Model):
    _name = 'library.book.report' 
    _description = 'Book Report'
    _auto = False

    name = fields.Char('Title') 
    publisher_id = fields.Many2one('res.partner') 
    date_published = fields.Date() 

    def init(self):
        self.env.cr.execute("""
           CREATE OR REPLACE VIEW library_book_report AS
           (SELECT *
           FROM library_book
           WHERE active = True)
        """)

For this file to be loaded, we need to add a from...