Movatterモバイル変換


[0]ホーム

URL:


Packt
Search iconClose icon
Search icon CANCEL
Subscription
0
Cart icon
Your Cart(0 item)
Close icon
You have no products in your basket yet
Save more on your purchases!discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Profile icon
Account
Close icon

Change country

Modal Close icon
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timerSALE ENDS IN
0Days
:
00Hours
:
00Minutes
:
00Seconds
Home> Business & Other> Enterprise Resource Planning> Odoo 14 Development Cookbook
Odoo 14 Development Cookbook
Odoo 14 Development Cookbook

Odoo 14 Development Cookbook: Rapidly build, customize, and manage secure and efficient business apps using Odoo's latest features , Fourth Edition

Arrow left icon
Profile Icon GajjarProfile Icon FayolleProfile Icon Holger BrunnProfile Icon Daniel Reis
Arrow right icon
€43.19€47.99
Full star iconFull star iconFull star iconFull star iconEmpty star icon4(5 Ratings)
eBookDec 2020784 pages4th Edition
eBook
€43.19 €47.99
Paperback
€59.99
Paperback
€37.99
Subscription
Free Trial
Renews at €18.99p/m
Arrow left icon
Profile Icon GajjarProfile Icon FayolleProfile Icon Holger BrunnProfile Icon Daniel Reis
Arrow right icon
€43.19€47.99
Full star iconFull star iconFull star iconFull star iconEmpty star icon4(5 Ratings)
eBookDec 2020784 pages4th Edition
eBook
€43.19 €47.99
Paperback
€59.99
Paperback
€37.99
Subscription
Free Trial
Renews at €18.99p/m
eBook
€43.19 €47.99
Paperback
€59.99
Paperback
€37.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with eBook?

Product feature iconInstant access to your Digital eBook purchase
Product feature icon Download this book inEPUB andPDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature iconDRM FREE - Read whenever, wherever and however you want
Product feature iconAI Assistant (beta) to help accelerate your learning
OR

Contact Details

Modal Close icon
Payment Processing...
tickCompleted

Billing Address

Table of content iconView table of contentsPreview book icon Preview Book

Odoo 14 Development Cookbook

Chapter 2: Managing Odoo Server Instances

InChapter 1,Installing the Odoo Development Environment, we looked at how to set up an Odoo instance using only the standard core add-ons that are shipped with source. This chapter focuses on adding non-core or custom add-ons to an Odoo instance. In Odoo, you can load add-ons from multiple directories. In addition, it is recommended that you load your third-party add-ons or your own custom add-ons from separate folders to avoid conflicts with Odoo core modules. Even Odoo Enterprise Edition is a type of add-on directory, and you need to load this just like a normal add-ons directory.

In this chapter, we will cover the following recipes:

  • Configuring the add-ons path
  • Standardizing your instance directory layout
  • Installing and upgrading local add-on modules
  • Installing add-on modules from GitHub
  • Applying changes to add-ons
  • Applying and trying proposed pull requests

    About the terminology

    In this book, we will use the termsadd-on ormodule orapp oradd-on module interchangeably. All of them refer to the Odoo app or Extension app that can be installed in Odoo from the user interface.

Configuring the add-ons path

With thehelp of theaddons_path parameter, you can load your own add-on modules into Odoo. When Odoo initializes a new database, it will search for add-on modules within directories that have been provided in theaddons_path configuration parameter. Odoo will search in these directories for the potential add-on module.

Directories listed inaddons_path are expected to contain subdirectories, each of which is an add-on module. Following initialization of the database, you will be able to install modules that are given in these directories.

Getting ready

This recipe assumes that you have an instance ready with a configuration file generated, as described in theStoring the instance configuration in a file recipe inChapter 1,Installing the Odoo Development Environment. Note that the source code of Odoo is available in~/odoo-dev/odoo, and the configuration file in~/odoo-dev/myodoo.cfg.

How to do it…

To addthe~/odoo-dev/local-addons directory toaddons_path of the instance, perform the following steps:

  1. Edit the configuration file for your instance, that is,~/odoo-dev/myodoo.cfg.
  2. Locate the line starting withaddons_path=. By default, this should look like the following:
    addons_path = ~/odoo-dev/odoo/addons
  3. Modify the line by appending a comma, followed by the name of the directory you want to add toaddons_path, as shown in the following code:
    addons_path = ~/odoo-dev/odoo/addons,~/odoo-dev/local-addons
  4. Restart your instance from the terminal:
    $ ~/odoo-dev/odoo/odoo-bin -c my-instance.cfg

How it works…

When Odoois restarted, the configuration file is read. The value of theaddons_path variable is expected to be a comma-separated list of directories. Relative paths are accepted, but they are relative to the current working directory and therefore should be avoided in the configuration file.

At this point, we have only listed the add-on directory in Odoo, but no add-on modules are present in~/odoo-dev/local-addons. And even if you add a new add-on module to this directory, Odoo does not show this module in the user interface. For this, you need to performan extra operation, as explained in the next recipe,Updating the add-on modules list.

Note

The reason behind this is that when you initialize a new database, Odoo automatically lists your custom modules in available modules, but if you add new modules following database initialization, then you need to manually update the list of available modules, as shown in theUpdating the add-on modules list recipe.

There's more…

When you call theodoo-bin script for the first time to initialize a new database, you can pass the--addons-path command-line argument with a comma-separated list of directories. This will initialize the list of available add-on modules with all of the add-ons found in thesupplied add-ons path. When you do this, you have to explicitly include the base add-ons directory (odoo/odoo/addons), as well as the core add-ons directory (odoo/addons). A small difference with the preceding recipe is that the local add-ons must not be empty; they must contain at least one sub-directory, which has the minimal structure of an add-on module.

InChapter 3,Creating Odoo Add-On Modules, we will look at how to write your own modules. In the meantime, here's a quick hack to produce something that will make Odoo happy:

$ mkdir -p ~/odoo-dev/local-addons/dummy$ touch ~/odoo-dev/local-addons/dummy/  init  .py$ echo '{"name": "dummy", "installable": False}' > \~/odoo-dev/local-addons/dummy/  manifest  .py

You can use the--save option to save the path to the configuration file:

$ odoo/odoo-bin -d mydatabase \--add-ons-path="odoo/odoo/addons,odoo/addons,~/odoo-dev/local-addons"\--save -c ~/odoo-dev/my-instance.cfg --stop-after-init

In this case, usingrelative paths is OK, since they will be converted into absolute paths in the configuration file.

Note

Since Odoo only checks directories in the add-ons path for the presence of add-ons when the path is set from the command line, not when the path is loaded from a configuration file, the dummy module is no longer necessary. You may, therefore, remove it (or keep it until you're sure that you won't need to create a new configuration file).

Standardizing your instance directory layout

We recommend that your development and production environments all use a similar directorylayout. This standardization will prove helpful when you have to perform maintenance operations, and it will also ease your day-to-day work.

This recipe creates a directory structure that groups files with similar life cycles or similar purposes in standardized subdirectories.

Note

This recipe is only useful if you want to manage similar folder structure development and production environments. If you do not want this, you can skip this recipe.

Also, it is not compulsory to observe the same folder structure as in this recipe. Feel free to alter this structure to suit yourneeds.

How to do it…

To create the proposed instance layout, you need to perform the following steps:

  1. Create one directory per instance:
    $ mkdir ~/odoo-dev/projectname$ cd ~/odoo-dev/projectname
  2. Create a Pythonvirtualenv object in a subdirectory calledenv/:
    $python3 -m venv env
  3. Createsome subdirectories, as follows:
    $ mkdir src local bin filestore logs

    The functions of the subdirectories are as follows:

    • src/: This contains the clone of Odoo itself, as well as the various third-party add-on projects (we have added Odoo source code to the next step in this recipe).
    • local/: This is used to save your instance-specific add-ons.
    • bin/: This includes various helper executable shell scripts.
    • filestore/: This is used as a file store.
    • logs/ (optional): This is used to store the server log files.
  4. Clone Odoo and install the requirements (refer toChapter 1,Installing the Odoo Development Environment, for details on this):
    $ git clone -b 14.0 --single-branch --depth 1 https://github.com/odoo/odoo.git src/odoo$ env/bin/pip3 install -r src/odoo/requirements.txt
  5. Save the following shell script asbin/odoo:
    #!/bin/sh ROOT=$(dirname $0)/..PYTHON=$ROOT/env/bin/python3 ODOO=$ROOT/src/odoo/odoo-bin$PYTHON $ODOO -c $ROOT/projectname.cfg "$@" exit $?
  6. Make the script executable:
    $ chmod +x bin/odoo
  7. Create an empty dummy local module:
    $ mkdir -p local/dummy$ touch local/dummy/  init  .py$ echo '{"name": "dummy", "installable": False}' >\ local/dummy/  manifest  .py
  8. Generatea configuration file for your instance:
    $ bin/odoo --stop-after-init --save \--addons-path src/odoo/odoo/addons,src/odoo/addons,local \--data-dir filestore
  9. Add a.gitignore file, which is used to tell GitHub to exclude given directories so that Git will ignore these directories when you commit the code, for example,filestore/,env/,logs/, andsrc/:
    # dotfiles, with exceptions:.*!.gitignore# python compiled files*.py[co]# emacs backup files*~# not tracked subdirectories/env//src//filestore//logs/
  10. Create a Git repository for this instance and add the files you've added to Git:
    $ git init$ git add .$ git commit -m "initial version of projectname"

How it works…

We generatea clean directory structure with clearly labeled directories and dedicated roles. We are using different directories to store the following:

  • The code maintained by other people (insrc/)
  • The local-specific code
  • filestore of the instance

By having onevirtualenv environment per project, we are sure that the project's dependencies will not interfere with the dependencies of other projects that may be running a different version of Odoo or will use different third-party add-on modules, which require different versions of Python dependencies. This comes at the cost of a little disk space.

In a similar way, by using separate clones of Odoo and third-party add-on modules for our different projects, we are able to let each of these evolve independently and only install updates on the instances that need them, hence reducing the risk of introducing regressions.

Thebin/odoo script allows us to run the server without having to remember the various paths or activate thevirtualenv environment. This also sets the configuration file for us. You can add additional scripts in there to help you in your day-to-day work. For instance, you can add a script to check out the different third-party projects that you need to run your instance.

Regarding the configuration file, we have only demonstrated the bare minimum options to set up here, but you can obviously set up more, such as the database name, the database filter, or the port on which the project listens. Refer toChapter 1,Installing the Odoo Development Environment, for more information on this topic.

Finally, bymanaging all of this in a Git repository, it becomes quite easy to replicate the setup on a different computer and share the development among a team.

Speedup tip

To facilitate project creation, you can create a template repository containing the empty structure, and fork that repository for each new project. This will save you from retyping thebin/odoo script, the.gitignore file, and any other template file you need (continuous integration configuration,README.md,ChangeLog, and so on).

There's more...

The developmentof complex modules requires various configuration options, which leads to updating the configuration file whenever you want to try any configuration option. Updating the configuration file frequently can be a headache, and to avoid this, an alternative way is to pass all configuration options from the command line, as follows:

  1. Activatevirtualenv manually:
    $ source env/bin/activate
  2. Go to the Odoo source directory:
    $ cd src/odoo
  3. Run the server:
    ./odoo-bin --addons-path=addons,../../local -d test-14 -i account,sale,purchase --log-level=debug

Instep 3, we passed a few configuration options directly from the command line. The first is--add-ons-path, which loads Odoo's core add-ons directory,addons, and your add-onsdirectory,local, in which you will put your own add-on modules. Option-d will use thetest-14 database or create a new database if it isn't present. The-i option will install theaccount,sale, andpurchase modules. Next, we passed thelog-level option and increased the log level todebug so that it will display more information in the log.

Note

By using the command line, you can quickly change the configuration options. You can also see live logs in the terminal. For all available options, refer toChapter 1,Installing the Odoo Development Environment, or use the--help command to viewa list of all options and the description ofeach option.

Installing and upgrading local add-on modules

The core functionality of Odoo comes from its add-on modules. You have a wealth of add-ons available as part of Odoo itself, as well as add-on modules that you can downloadfrom the app store or that have been written by yourself.

In this recipe, we willdemonstrate how to install and upgrade add-on modules through the web interface and from the command line.

The main benefits of using the command line for these operations include being able to act on more than one add-on at a time and having a clear view of the server logs as the installation or update progresses, which is very useful when in development mode or when scripting the installation of an instance.

Getting ready

Make sure that you have a running Odoo instance with its database initialized and the add-ons path properly set. In this recipe, we will install/upgrade a few add-on modules.

How to do it…

There are two possible methods to install or update add-ons—you can use the web interface or the command line.

From the web interface

To installa new add-on modulein your database using the web interface, perform the following steps:

  1. Connect to the instance using theAdministrator account and open theApps menu:
    Figure 2.1 – List of Odoo apps

    Figure 2.1 – List of Odoo apps

  2. Use the search box to locate the add-on you want to install. Here are a few instructions to help you with this task:
    • Activate theNot Installed filter.
    • If you're looking for a specific functionality add-on rather than a broad functionality add-on, remove theApps filter.
    • Type a part of the module name in the search box and use this as aModule filter.
    • You may find that using the list view gives something more readable.
  3. Click on theInstall button under the module name in the card.

Note that some Odoo add-on modules have external Python dependencies. If Python dependencies are not installed in your system, then Odoo will abort the installation and it will show the following dialog:

Figure 2.2 – Warning for external library dependency

Figure 2.2 – Warning for external library dependency

To fixthis, just install the relevantPython dependencies on your system.

To update a pre-installed module in your database, perform the following steps:

  1. Connect to the instance using theAdministrator account.
  2. Open theApps menu.
  3. Click onApps:
    Figure 2.3 – Odoo apps list

    Figure 2.3 – Odoo apps list

  4. Use the search box to locate the add-on you want to install. Here are a few tips:
    • Activate theInstalled filter.
    • If you're looking for a specific functionality add-on rather than a broad functionality add-on, remove theApps filter.
    • Type a part of the add-on module name into the search box and then pressEnter to use this as aModule filter. For example, typeCRM and pressEnter to search CRM apps.
    • You mayfind that usingthe list view gives you something more readable.
  5. Click on the three dots in the top right-corner of the card and click on theUpgrade option:
Figure 2.4 – Drop-down link for upgrading the module

Figure 2.4 – Drop-down link for upgrading the module

Activate developer mode to see the technical name of the module. SeeChapter 1,Installing the Odoo Development Environment, if you don't know how to activatedeveloper mode:

Figure 2.5 – Application's technical names

Figure 2.5 – Application's technical names

After activating developer mode, it will show the module's technical name in red. If you are using Odoo Community Edition, you will see some extra apps with theUpgrade button. Those apps are Odoo Enterprise Edition apps,and in order to install/use them, you need to purchase a license.

From the command line

To installnew add-ons in yourdatabase, perform the following steps:

  1. Find the names of the add-ons. This is the name of the directory containing the _manifest_.py file, without the leading path.
  2. Stop the instance. If you are working on a production database, make a backup.
  3. Run the following command:
    $ odoo/odoo-bin -c instance.cfg -d dbname -i addon1,addon2 \--stop-after-init

    You may omit-d dbname if this is set in your configuration file.

  4. Restart the instance.

To update an already installed add-on module in your database, perform the following steps:

  1. Find the name of the add-on module to update; this is the name of the directory containing the _manifest_.py file, without the leading path.
  2. Stop the instance. If you are working on a production database, make a backup.
  3. Run the following command:
    $ odoo/odoo-bin -c instance.cfg -d dbname -u addon1 \--stop-after-init

    You may omit-d dbname if this is set in your configuration file.

  4. Restart the instance.

How it works…

The add-onmodule installation and update are two closely related processes, but there are some important differences, as highlighted in the following two sections.

Add-on installation

When youinstall an add-on, Odoo checks its list of available add-ons for an uninstalled add-on with the supplied name. It also checks for the dependencies of that add-on and, if there are any, it will recursively install them before installing the add-on.

The installation process of a single module consists of the following steps:

  1. If there are any, run the add-onpreinit hook.
  2. Load the model definitions from the Python source code and update the database structure, if necessary (refer toChapter 4,Application Models, for details).
  3. Load the data files of the add-on and update the database contents, if necessary (refer toChapter 6,ManagingModule Data, for details).
  4. Install the add-on demo data if demo data has been enabled in the instance.
  5. If there are any, run the add-onpostinit hook.
  6. Run a validation of the view definitions of the add-on.
  7. If demo data is enabled and a test is enabled, run the tests of the add-on (refer toChapter 18,Automated Test Cases, for details).
  8. Update the module state in the database.
  9. Update the translations in the database from the add-on's translations (refer toChapter 11,Internationalization, for details).

    Note

    Thepreinit andpostinit hooks are defined in the _manifest_.py file using thepre_init_hook andpost_init_hook keys, respectively. These hooks are used to invoke Python functions before and after the installation of an add-on module. To learn more aboutinit hooks,refer toChapter 3,Creating Odoo Add-On Modules.

Add-on update

When youupdate an add-on, Odoo checks in its list of available add-on modules for an installed add-on with the given name. It also checks for the reverse dependencies of that add-on (these are the add-ons that depend on the updated add-on). If any, it will recursively update them, too.

The update process of a single add-on module consists of the following steps:

  1. Run the add-on module's pre-migration steps, if any (refer toChapter 6,ManagingModule Data, for details).
  2. Load the model definitions from the Python source code and update the database structure if necessary (refer toChapter 4,Application Models, for details).
  3. Load the data files of the add-on and update the database's contents if necessary (refer toChapter 6,ManagingModule Data, for details).
  4. Update the add-on's demo data if demo data is enabled in the instance.
  5. If your module has any migration methods, run the add-on post-migration steps (refer toChapter 6,ManagingModule Data, for details).
  6. Run a validation of the view definitions of the add-on.
  7. If demo data is enabled and a test is enabled, run the tests of the add-on (refer toChapter 18,Automated Test Cases, for details).
  8. Update the module state in the database.
  9. Update the translations in the database from the add-on's translations (refer toChapter 11,Internationalization, for details).

    Note

    Note that updating an add-on module that is not installed does nothing at all. However, installing an add-on module that is already installed reinstalls the add-on, which can have some unintended effects with some data files that contain data that is supposed to be updated by the user and not updated during the normal module update process (refer to theUsing the noupdate and forcecreate flags recipe inChapter 6,ManagingModule Data). There is no risk of error from the user interface, but this can happen from the command line.

There's more…

Be careful with dependency handling. Consider an instance where you want to have thesale,sale_stock, andsale_specific add-ons installed, withsale_specific depending onsale_stock, andsale_stock depending onsale. To install all three, you only need to installsale_specific, as it will recursively install thesale_stock andsale dependencies. To update all three, you need to updatesale, as this will recursively update the reverse dependencies,sale_stock andsale_specific.

Another tricky part with managing dependencies is when you add a dependency to an add-on that alreadyhas a version installed. Let's understand this by continuing with the previous example. Imagine that you add a dependency onstock_dropshipping insale_specific. Updating thesale_specific add-on will not automatically install the new dependency, and neither will requesting the installation ofsale_specific. In this situation, you can get very nasty error messages because the Python code of the add-on is not successfully loaded, but the data of the add-on and the models' tables in the database are present. To resolve this, you need to stop the instance and manually install the new dependency.

Installing add-on modules from GitHub

GitHub is a great source of third-party add-ons. A lot of Odoo partners use GitHub to share theadd-ons they maintain internally, and theOdoo Community Association (OCA) collectively maintains severalhundred add-ons on GitHub. Before you startwriting your own add-on, ensure that you check that nothing already exists that you can use as is or as a starting point.

This recipe will show you how to clone thepartner-contact project of the OCA from GitHub and make the add-on modules it contains available in your instance.

Getting ready

Suppose you want to add new fields to the customers (partner) form. By default, the Odoo customers model doesn't have agender field. If you want to add agender field, you need to create a new module. Fortunately, someone on a mailing list tells you about thepartner_contact_gender add-on module, which is maintained by the OCA as part of thepartner-contact project.

The paths that are used in this recipe reflect the layout that was proposed in theStandardizing your instancedirectory layout recipe.

How to do it…

To installpartner_contact_gender, perform the following steps:

  1. Go toyour project's directory:
    $ cd ~/odoo-dev/my-odoo/src
  2. Clonethe14.0 branch of thepartner-contact project in thesrc/directory:
    $ git clone --branch 14.0 \https://github.com/OCA/partner-contact.git src/partner-contact
  3. Change the add-ons path to include that directory and update the add-ons list of your instance (refer to theConfiguring the add-ons path recipe andUpdating the add-on modules list recipes in this chapter). Theadd-ons_path line ofinstance.cfg should look like this:
    addons_path = ~/odoo-dev/my-odoo/src/odoo/odoo/addons, \~/odoo-dev/my-odoo/src/odoo/addons, \~/odoo-dev/my-odoo/src/, \~/odoo-dev/local-addons
  4. Install thepartner_contact_gender add-on (if you don't know how to install the module, take a look at the previous recipe,Installing and upgrading local add-on modules).

How it works…

All of theOdoo Community Association coderepositories have their add-ons contained in separate subdirectories, which is coherent in accordance with what is expected by Odoo regarding the directories in the add-ons path. Consequently, just cloning the repository somewhere and adding that location in the add-ons path is enough.

There's more…

Some maintainers follow a different approach and have one add-on module per repository, living at the root of the repository. In that case, you need to create a new directory, which you will add to the add-ons path and clone all of the add-ons from the maintainer you need in this directory. Rememberto update the add-on modules list each time you add a new repository clone.

Applying changes to add-ons

Most add-ons that are available on GitHub are subject to change and do not follow the rules thatOdoo enforces for its stable release. They may receive bug fixes or enhancements, including issues or feature requests that you have submitted, and these changes may introduce database schema changes or updates in the data files and views. This recipe explains how toinstall the updated versions.

Getting ready

Suppose you reported an issue withpartner_contact_gender and received a notification that the issue was solved in the last revision of the14.0 branch of thepartner-contact project. In this case, you will want to update your instance with this latest version.

How to do it…

To applya source modification to your add-on from GitHub, you need to perform the following steps:

  1. Stop the instance using that add-on.
  2. Make a backup if it is a production instance (refer to theManage Odoo server databases recipe inChapter 1,Installing the Odoo Development Environment).
  3. Go to the directory wherepartner-contact was cloned:
    $ cd ~/odoo-dev/my-odoo/src/partner-contact
  4. Create a local tag for the project so that you can revert to that version in case things break:
    $ git checkout 14.0$ git tag 14.0-before-update-$(date --iso)
  5. Get the latest version of the source code:
    $ git pull --ff-only
  6. Update thepartner_address_street3 add-on in your databases (refer to theInstalling and upgrading local add-on modulesrecipe).
  7. Restart the instance.

How it works…

Usually, the developer of the add-on module occasionally releases the newest version of the add-on. This update typically contains bug fixes and new features. Here, we will get a new version of the add-on and update it in our instances.

Ifgit pull --ff-only fails, you can revert to the previous version using the following command:

$ git reset --hard 14.0-before-update-$(date --iso)

Then, you can trygit pull (without--ff-only), which will cause a merge, but this means thatyou have local changes on the add-on.

See also

If the update step breaks, refer to theUpdating Odoo from Source recipe inChapter 1,Installing the Odoo Development Environment, for recovery instructions. Remember to always test an update on a copyof a database production first.

Applying and trying proposed pull requests

In the GitHub world, aPull Request (PR) is a request that's made by a developer so that themaintainers of a project can include some new developments. Such a PR may contain a bug fix or a new feature. These requests are reviewedand tested before being pulled into the main branch.

This recipe explains how to apply a PR to your Odoo project in order totest an improvement or a bug fix.

Getting ready

As in the previous recipe, suppose you reported an issue withpartner_address_street3 and received a notification that the issue was solved in a PR, which hasn't been merged in the14.0 branch of the project. The developer asks you to validate the fix in PR #123. You need to update a test instance with this branch.

You should not try out such branches directly on a production database, so first create a test environment with a copy of the production database (refer toChapter 1,Installing the Odoo Development Environment).

How to do it…

To apply and try out a GitHub PR for an add-on, you need to perform the following steps:

  1. Stop the instance.
  2. Go to the directory wherepartner-contact was cloned:
    $ cd ~/odoo-dev/my-odoo/src/partner-contact
  3. Create a local tag for the project so that you can revert to that version in case things break:
    $ git checkout 14.0$ git tag 14.0-before-update-$(date --iso)
  4. Pull thebranch of thepull request. The easiest way todo this is by using the number of the PR, which should have been communicated to you by the developer. In our example, this is PR number123:
    $ git pull origin pull/123/head
  5. Update thepartner_contact_gender1 add-on module in your database and restart the instance (refer to theInstalling and upgrading local add-on modules recipe if you don't know how to update the module).
  6. Test the update—try to reproduce your issue, or try out the feature you wanted.

If this doesn't work, comment on the PR page of GitHub, explaining what you did and what didn't work so that the developer can update the PR.

If it works, say so on the PR page too; this is anessential part of the PR validation process, and it will speed up merging in the main branch.

How it works…

We are using a GitHub feature that enables pull requests to be pulled by number using thepull/nnnn/head branch name, wherennnn is the number of the PR. The Git pull command will merge the remote branch in ours, applying the changes in our code base. After this, we update the add-on module, test it, and report back to the author of the change with regard to any failures or success.

There's more…

You can repeatstep 4 of this recipe for different pull requests in the same repository if you wantto test them simultaneously. If you are reallyhappy with the result, you can create a branch to keep a reference to the result of the applied changes:

$ git checkout -b 14.0-custom

Using a different branch will help you remember that you are not using the version from GitHub, but a custom one.

Note

Thegit branch command can be used to list all of the local branches you have in your repository.

From then on, if you need to apply the latest revision of the14.0 branch from GitHub, you will need to pull it without using--ff-only:

$ git pull origin 14.0
Left arrow icon

Page1 of 9

Right arrow icon
Download code iconDownload Code

Description

With its latest iteration, the powerful Odoo framework released a wide variety of features for rapid application development. This updated Odoo development cookbook will help you explore the new features in Odoo 14 and learn how to use them to develop Odoo applications from scratch. You'll learn about the new website concepts in Odoo 14 and get a glimpse of Odoo's new web-client framework, the Odoo Web Library (OWL).Once you've completed the installation, you'll begin to explore the Odoo framework with real-world examples. You'll then create a new Odoo module from the ground up and progress to advanced framework concepts. You'll also learn how to modify existing applications, including Point of Sale (POS) applications. This book isn't just limited to backend development; you'll discover advanced JavaScript recipes for creating new views and widgets. As you progress, you'll learn about website development and become a quality Odoo developer by studying performance optimization, debugging, and automated testing. Finally, you'll delve into advanced concepts such as multi-website, In-App Purchasing (IAP), Odoo.sh, the IoT Box, and security.By the end of the book, you'll have all the knowledge you need to build impressive Odoo applications and you'll be well versed in development best practices that will come in handy when working with the Odoo framework.

What you will learn

  • Build beautiful websites with Odoo CMS using dynamic building blocks
  • Get to grips with advanced concepts such as caching, prefetching, debugging
  • Modify backend JavaScript components and POS applications with the new OWL framework
  • Connect and access any object in Odoo via Remote Procedure Calls (RPC)
  • Manage, deploy, and test an Odoo instance with Odoo.sh
  • Configure IoT Box to add and upgrade Point of Sale (POS) hardware
  • Find out how to implement in-app purchase services

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date :Dec 24, 2020
Length:784 pages
Edition :4th
Language :English
ISBN-13 :9781800204775
Vendor :
Odoo S.A
Languages :
Tools :

What do you get with eBook?

Product feature iconInstant access to your Digital eBook purchase
Product feature icon Download this book inEPUB andPDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature iconDRM FREE - Read whenever, wherever and however you want
Product feature iconAI Assistant (beta) to help accelerate your learning
OR

Contact Details

Modal Close icon
Payment Processing...
tickCompleted

Billing Address

Product Details

Publication date :Dec 24, 2020
Length:784 pages
Edition :4th
Language :English
ISBN-13 :9781800204775
Vendor :
Odoo S.A
Category :
Languages :
Concepts :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99billed monthly
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconSimple pricing, no contract
€189.99billed annually
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconChoose a DRM-free eBook or Video every month to keep
Feature tick iconPLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick iconExclusive print discounts
€264.99billed in 18 months
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconChoose a DRM-free eBook or Video every month to keep
Feature tick iconPLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick iconExclusive print discounts

Frequently bought together


Odoo 15 Development Essentials
Odoo 15 Development Essentials
Read more
Feb 2022548 pages
Full star icon4.8 (8)
eBook
eBook
€26.09€28.99
€37.99
€35.99
Designing Professional Websites with Odoo Website Builder
Designing Professional Websites with Odoo Website Builder
Read more
Jun 2021390 pages
Full star icon4.6 (5)
eBook
eBook
€24.29€26.99
€32.99
Odoo 14 Development Cookbook
Odoo 14 Development Cookbook
Read more
Dec 2020784 pages
Full star icon4 (5)
eBook
eBook
€43.19€47.99
€59.99
€37.99
Stars icon
Total128.97
Odoo 15 Development Essentials
€35.99
Designing Professional Websites with Odoo Website Builder
€32.99
Odoo 14 Development Cookbook
€59.99
Total128.97Stars icon

Table of Contents

25 Chapters
Chapter 1: Installing the Odoo Development EnvironmentChevron down iconChevron up icon
Chapter 1: Installing the Odoo Development Environment
Understanding the Odoo ecosystem
Easy installation of Odoo from source
Managing Odoo server databases
Storing the instance configuration in a file
Activating Odoo developer tools
Updating the add-on modules list
Chapter 2: Managing Odoo Server InstancesChevron down iconChevron up icon
Chapter 2: Managing Odoo Server Instances
Configuring the add-ons path
Standardizing your instance directory layout
How to do it…
How it works…
Installing and upgrading local add-on modules
Installing add-on modules from GitHub
Applying changes to add-ons
Applying and trying proposed pull requests
Chapter 3: Creating Odoo Add-On ModulesChevron down iconChevron up icon
Chapter 3: Creating Odoo Add-On Modules
Technical requirements
What is an Odoo add-on module?
Creating and installing a new add-on module
How to do it...
Completing the add-on module manifest
Organizing the add-on module file structure
Adding models
Adding menu items and views
Adding access security
Using the scaffold command to create a module
Chapter 4: Application ModelsChevron down iconChevron up icon
Chapter 4: Application Models
Technical requirements
Defining the model representation and order
Adding data fields to a model
Using a float field with configurable precision
Adding a monetary field to a model
Adding relational fields to a model
Adding a hierarchy to a model
Adding constraint validations to a model
Adding computed fields to a model
Exposing related fields stored in other models
Adding dynamic relations using reference fields
Adding features to a model using inheritance
Copy model definition using inheritance
Using delegation inheritance to copy features to another model
Using abstract models for reusable model features
Chapter 5: Basic Server-Side DevelopmentChevron down iconChevron up icon
Chapter 5: Basic Server-Side Development
Technical requirements
Defining model methods and using API decorators
Getting ready
Reporting errors to the user
Obtaining an empty recordset for a different model
Creating new records
Updating values of recordset records
Searching for records
Combining recordsets
Filtering recordsets
Traversing recordset relations
Sorting recordsets
Extending the business logic defined in a model
Extending write() and create()
Customizing how records are searched
Fetching data in groups using read_group()
Chapter 6: Managing Module DataChevron down iconChevron up icon
Chapter 6: Managing Module Data
Technical requirements
Using external IDs and namespaces
Loading data using XML files
Using the noupdate and forcecreate flags
Loading data using CSV files
Add-on updates and data migration
Deleting records from XML files
Invoking functions from XML files
Chapter 7: Debugging ModulesChevron down iconChevron up icon
Chapter 7: Debugging Modules
The auto-reload and --dev options
Producing server logs to help debug methods
Using the Odoo shell to interactively call methods
Using the Python debugger to trace method execution
Understanding the debug mode options
Chapter 8: Advanced Server-Side Development TechniquesChevron down iconChevron up icon
Chapter 8: Advanced Server-Side Development Techniques
Technical requirements
Changing the user that performs an action
Calling a method with a modified context
Executing raw SQL queries
Writing a wizard to guide the user
See also
Defining onchange methods
Calling onchange methods on the server side
Defining onchange with the compute method
See also
Defining a model based on a SQL view
See also
Adding custom settings options
Implementing init hooks
Chapter 9: Backend ViewsChevron down iconChevron up icon
Chapter 9: Backend Views
Technical requirements
Adding a menu item and window actions
Having an action open a specific view
Adding content and widgets to a form view
Adding buttons to forms
Passing parameters to forms and actions – context
Defining filters on record lists – domain
Defining list views
Defining search views
Adding a search filter side panel
Changing existing views – view inheritance
Defining document-style forms
See also
Dynamic form elements using attrs
Defining embedded views
Displaying attachments on the side of the form view
Defining kanban views
See also
Showing kanban cards in columns according to their state
Defining calendar views
Defining graph view and pivot view
Defining the cohort view
Defining the dashboard view
Defining the gantt view
Defining the activity view
Defining the map view
Chapter 10: Security AccessChevron down iconChevron up icon
Chapter 10: Security Access
Technical requirements
Creating security groups and assigning them to users
Adding security access to models
Limiting access to fields in models
Limiting record access using record rules
Using security groups to activate features
Accessing recordsets as a superuser
Hiding view elements and menus based on groups
Chapter 11: InternationalizationChevron down iconChevron up icon
Chapter 11: Internationalization
Installing a language and configuring user preferences
Configuring language-related settings
Translating texts through the web client user interface
Exporting translation strings to a file
Using gettext tools to make translations easier
Importing translation files into Odoo
Changing the custom language URL code for a website
Chapter 12: Automation, Workflows, Emails, and PrintingChevron down iconChevron up icon
Chapter 12: Automation, Workflows, Emails, and Printing
Technical requirements
Managing dynamic record stages
Managing kanban stages
Adding a quick create form to a kanban card
Creating interactive kanban cards
Adding a progress bar in kanban views
Creating server actions
Using Python code server actions
Using automated actions on time conditions
Using automated actions on event conditions
Creating QWeb-based PDF reports
Managing activities from a kanban card
Adding a stat button to a form view
Enabling the archive option for records
Chapter 13: Web Server DevelopmentChevron down iconChevron up icon
Chapter 13: Web Server Development
Technical requirements
Making a path accessible from the network
Restricting access to web-accessible paths
Consuming parameters passed to your handlers
Modifying an existing handler
Serving static resources
Chapter 14: CMS Website DevelopmentChevron down iconChevron up icon
Chapter 14: CMS Website Development
Managing static assets
Adding CSS and JavaScript for a website
Creating or modifying templates – QWeb
Managing dynamic routes
Offering static snippets to the user
Offering dynamic snippets to the user
Getting input from website users
Managing SEO options
Managing sitemaps for the website
Getting a visitor's country information
Tracking a marketing campaign
Managing multiple websites
Redirecting old URLs
Publish management for website-related records
Chapter 15: Web Client DevelopmentChevron down iconChevron up icon
Chapter 15: Web Client Development
Technical requirements
Creating custom widgets
Using client-side QWeb templates
Making RPC calls to the server
Creating a new view
Debugging your client-side code
Improving onboarding with tours
Mobile app JavaScript
Chapter 16: The Odoo Web Library (OWL)Chevron down iconChevron up icon
Chapter 16: The Odoo Web Library (OWL)
Technical requirements
Creating an OWL component
Managing user actions in an OWL component
Making OWL components reactive
Understanding the OWL component life cycle
Adding an OWL field to the form view
Chapter 17: In-App Purchasing with OdooChevron down iconChevron up icon
Chapter 17: In-App Purchasing with Odoo
Technical requirements
IAP concepts
Registering an IAP service in Odoo
Creating an IAP service module
Authorizing and charging IAP credits
Creating an IAP client module
Displaying offers when an account lacks credits
Chapter 18: Automated Test CasesChevron down iconChevron up icon
Chapter 18: Automated Test Cases
Technical requirements
Adding Python test cases
Running tagged Python test cases
Setting up Headless Chrome for client-side test cases
Adding client-side QUnit test cases
Adding tour test cases
Running client-side test cases from the UI
Debugging client-side test cases
Generating videos/screenshots for failed test cases
Populating random data for testing
Chapter 19: Managing, Deploying, and Testing with Odoo.shChevron down iconChevron up icon
Chapter 19: Managing, Deploying, and Testing with Odoo.sh
Technical requirements
Exploring some basic concepts of Odoo.sh
Creating an Odoo.sh account
Adding and installing custom modules
Managing branches
Accessing debugging options
Getting a backup of your instance
Checking the status of your builds
All Odoo.sh options
Chapter 20: Remote Procedure Calls in OdooChevron down iconChevron up icon
Chapter 20: Remote Procedure Calls in Odoo
Technical requirements
Logging in to/connecting Odoo with XML-RPC
Searching/reading records through XML-RPC
Creating/updating/deleting records through XML-RPC
Calling methods through XML-RPC
Logging in to/connecting Odoo with JSON-RPC
Fetching/searching records through JSON-RPC
Creating/updating/deleting records through JSON-RPC
Calling methods through JSON-RPC
The OCA odoorpc library
Generating API keys
Chapter 21: Performance OptimizationChevron down iconChevron up icon
Chapter 21: Performance Optimization
The prefetching pattern for recordsets
The in-memory cache – ormcache
Generating differently sized images
Accessing grouped data
Creating or writing multiple records
Accessing records through database queries
Profiling Python code
Chapter 22: Point of SaleChevron down iconChevron up icon
Chapter 22: Point of Sale
Technical requirements
Adding custom JavaScript/SCSS files
Adding an action button on the keyboard
Making RPC calls
Modifying the Point of Sale screen UI
Modifying existing business logic
Modifying customer receipts
Chapter 23: Managing Emails in OdooChevron down iconChevron up icon
Chapter 23: Managing Emails in Odoo
Technical requirements
Configuring incoming and outgoing email servers
Managing chatter on documents
Managing activities on documents
Sending emails using the Jinja template
Sending emails using the QWeb template
Managing the email alias
Logging user changes in a chatter
Sending periodic digest emails
Chapter 24: Managing the IoT BoxChevron down iconChevron up icon
Chapter 24: Managing the IoT Box
Technical requirements
Flashing the IoT Box image for Raspberry Pi
Connecting the IoT Box with a network
Adding the IoT Box to Odoo
Loading drivers and listing connected devices
Taking input from devices
Accessing the IoT Box through SSH
Configuring a point of sale
Sending PDF reports directly to a printer
Other Books You May EnjoyChevron down iconChevron up icon
Other Books You May Enjoy
Leave a review - let other readers know what you think

Recommendations for you

Left arrow icon
Mastering PyTorch
Mastering PyTorch
Read more
May 2024554 pages
Full star icon4.7 (20)
eBook
eBook
€28.79€31.99
€38.99
Microsoft 365 and SharePoint Online Cookbook
Microsoft 365 and SharePoint Online Cookbook
Read more
Feb 2024642 pages
Full star icon4.8 (23)
eBook
eBook
€21.59€23.99
€29.99
Tools and Skills for .NET 8
Tools and Skills for .NET 8
Read more
Jul 2024778 pages
Full star icon5 (13)
eBook
eBook
€26.09€28.99
€35.99
Information Theory
Information Theory
Read more
Nov 2024294 pages
eBook
eBook
€7.19€7.99
The Music Producer's Ultimate Guide to FL Studio 21
The Music Producer's Ultimate Guide to FL Studio 21
Read more
Jun 2023462 pages
Full star icon5 (11)
eBook
eBook
€21.59€23.99
€35.99
Workflow Automation with Microsoft Power Automate
Workflow Automation with Microsoft Power Automate
Read more
Aug 2022424 pages
Full star icon4.3 (35)
eBook
eBook
€29.69€32.99
€41.99
Mastering QuickBooks 2024
Mastering QuickBooks 2024
Read more
Dec 2023570 pages
Full star icon4.6 (18)
eBook
eBook
€18.89€20.99
€26.99
€22.99
Programming Microsoft Dynamics 365 Business Central
Programming Microsoft Dynamics 365 Business Central
Read more
Oct 2024466 pages
Full star icon5 (2)
eBook
eBook
€24.29€26.99
€33.99
Unreal Engine 5 Character Creation, Animation, and Cinematics
Unreal Engine 5 Character Creation, Animation, and Cinematics
Read more
Jun 2022598 pages
Full star icon4.7 (16)
eBook
eBook
€43.19€47.99
€59.99
Power Apps Tips, Tricks, and Best Practices
Power Apps Tips, Tricks, and Best Practices
Read more
Nov 2024430 pages
Full star icon4.5 (2)
eBook
eBook
€24.29€26.99
€33.99
Right arrow icon

Customer reviews

Rating distribution
Full star iconFull star iconFull star iconFull star iconEmpty star icon4
(5 Ratings)
5 star60%
4 star0%
3 star20%
2 star20%
1 star0%
ShambazovJan 05, 2021
Full star iconFull star iconFull star iconFull star iconFull star icon5
There is an obvious shortage of books on CRM systems. This is sad, because in our days the CRM market has been experiencing shocks and new players are emerging. In particular, there is a lack of books devoted to Odoo, so for example Odoo 13 was left without attention of major publishers. For this reason, the release of a new book is already an event.I have been waiting for this book for a long time and with impatience. As expected, it contains a lot of useful information. The quality of the selection of the material shows that the authors are practicing professionals and shared the solution to those issues that they themselves faced. The book is full of healthy recipes.Below I will write what thoughts I had while studying the book:Good thing there is a section on sitemaps.In section 9 - Backend views, it would be nice to add more illustrations of how the various views looks. This would help to choose the right one. For example, fig. 9.3 was a revelation for me, I did not know that this could be done.I was especially pleased with the recipe for redirecting old URLs. This must be paid attention to if you are creating a site on Odoo instead of an existing one, in order to exclude a failure in SEO.Another interesting recipe is "Generating videos / screenshots for failed test cases". Such an idea would not have occurred to me!The section on performance optimization is qute interesting. Basically, Odoo is fast enough even on weak machines. Before I used to use Nginx tools to further speed up Odoo.My wishes for the publishing house:Unfortunately, in the electronic version of the book, tables are presented as images. The problem is search doesn't work inside images and it can be difficult to find what readers needs.Another problem of the electronic version is that sometimes you come across unnecessary spaces in the command lines (for example, page 62), so you need to be careful when copying them from the book.Overall, the book is certainly useful and I will keep the book handy in my daily work.Who should I recommend this book to - someone who already knows the basics of working in Odoo. For beginners, I would advise you to wait until "Odoo 14 Development Essentials" is released. Cookbooks are not intended for beginners, they are a collection of recipes for solving practical problems. Moreover, it is intended specifically for developers. If you only use standard functionality, then much of the valuable information in this book will not be so useful to you.I look forward to the release of Odoo 14 Development Essentials.Thanks to Pack publishing for regularly publishing books about Odoo.
Amazon Verified reviewAmazon
Ray CarnesJan 05, 2021
Full star iconFull star iconFull star iconFull star iconFull star icon5
What I liked:Scope - the technical topics covered are the ones most developers will want to know about.Detail - lots of explanatory text and examples.Examples - you can develop your own module and access a GitHub repository to check your workAuthors - Daniel, Holger and Alexandre are well known and long time Community members so you are hearing from expertsWhat I didn't:Terms - some are not explained until AFTER they are introduced and this might trip up less knowledgeable DevOps folksWhy - the why behind the best practices isn't always explained - some may find this leaves them needing to research a topic in more detail on their ownScreenshots - when covering Backend Views there could be a lot more to convey how these workMobile - basically not coveredUp to Date - multi_edit is not covered (new at v14) so readers might want to review other resources to check they are fully up to date with what is available in this version.Still highly recommend the book!
Amazon Verified reviewAmazon
Cliente AmazonMay 25, 2021
Full star iconFull star iconFull star iconFull star iconFull star icon5
para poder realizar con efectividad y rapidez mi teletrabajo
Amazon Verified reviewAmazon
FrancescoJun 06, 2021
Full star iconFull star iconFull star iconEmpty star iconEmpty star icon3
I don't know if I was expecting more from the book or from Odoo itself but I'm quite disappointed (maybe by both).In the model development the book does not add much more than what you can find online. But I fear that's Odoo itself to be very poor in documentation and maybe the effort of these guys is anyway a good job. In the book you find just the solution for trivial problems (I'm talking about the models development) and so I realized that is better to change product to develop a tool for a customer. And it's not book's fault.
Amazon Verified reviewAmazon
Sakesun RoykiattisakOct 21, 2022
Full star iconFull star iconEmpty star iconEmpty star iconEmpty star icon2
The book contains heap of useful content. The authors are obviously very experience in Odoo development. They pour their years of experience into the book. Unfortunately, it was written thoughtlessly. The content was poorly organized. The book is filled with "There's more..." sections where authors put in his content without trying to organize them in any meaningful way. (there are 296 "There's more" in the book !!!)But there is indeed no better book to reasonably learn Odoo development. That's sad. :(The book is information-packed, but incredibly terribly written.
Amazon Verified reviewAmazon

People who bought this also bought

Left arrow icon
Workflow Automation with Microsoft Power Automate
Workflow Automation with Microsoft Power Automate
Read more
Aug 2022424 pages
Full star icon4.3 (35)
eBook
eBook
€29.69€32.99
€41.99
101 UX Principles – 2nd edition
101 UX Principles – 2nd edition
Read more
May 2022454 pages
Full star icon4.7 (60)
eBook
eBook
€24.29€26.99
€33.99
€31.99
Mastering PostgreSQL 15
Mastering PostgreSQL 15
Read more
Jan 2023522 pages
Full star icon4.9 (7)
eBook
eBook
€34.19€37.99
€46.99
€38.99
Mastering Microsoft Dynamics 365 Business Central
Mastering Microsoft Dynamics 365 Business Central
Read more
Mar 2024684 pages
Full star icon4.9 (15)
eBook
eBook
€26.99€29.99
€37.99
Learn Blender Simulations the Right Way
Learn Blender Simulations the Right Way
Read more
Nov 2022368 pages
Full star icon4.2 (13)
eBook
eBook
€32.39€35.99
€44.99
€37.99
Right arrow icon

About the 4 authors

Left arrow icon
Profile icon Gajjar
Gajjar
LinkedIn iconGithub icon
Parth Gajjar is a seasoned Odoo techno-functional expert with over a decade of experience. Starting his career at Odoo in 2012, he spent seven years in the R&D team at Odoo India, developing key features like Marketing Automation, Domain Builder, Website Builder, and the Odoo Mobile App, while also serving as a code reviewer and technical trainer. In 2019, Parth founded Droggol Infotech Pvt. Ltd., delivering hundreds of custom Odoo solutions across various industries and countries. His passion lies in leveraging Odoo and other technologies to solve real-world problems and push the platform's boundaries.
Read more
See other products by Gajjar
Profile icon Fayolle
Fayolle
LinkedIn iconGithub icon
Alexandre Fayolle started working with Linux and free software in the mid-1990s and quickly became interested in the Python programming language. In 2012, he joined Camptocamp to share his expertise on Python, PostgreSQL, and Linux with the team implementing Odoo. He currently manages projects for Camptocamp and is strongly involved in the Odoo Community Association. In his spare time, he likes to play jazz on the vibraphone.
Read more
See other products by Fayolle
Profile icon Holger Brunn
Holger Brunn
Holger Brunn has been a fervent open source advocate since he came into contact with the open source market sometime in the nineties.He has programmed for ERP and similar systems in different positions since 2001. For the last 10 years, he has dedicated his time to TinyERP, which became OpenERP and evolved into Odoo. Currently, he works at Therp BV in the Netherlands as a developer and is an active member of the Odoo Community Association.
Read more
See other products by Holger Brunn
Profile icon Daniel Reis
Daniel Reis
LinkedIn iconGithub icon
Daniel Reis has a degree in applied mathematics and an MBA. He has had a long career in the IT industry, mostly as a consultant implementing business applications in a variety of sectors.He has been working with Odoo (OpenERP at the time) since 2010 and is an active contributor to the Odoo Community Association (OCA), where he also serves as a board member.He is the managing director of Open Source Integrators, a leading open source and Odoo consultancy firm.
Read more
See other products by Daniel Reis
Right arrow icon
Getfree access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook?Chevron down iconChevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website?Chevron down iconChevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook?Chevron down iconChevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support?Chevron down iconChevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks?Chevron down iconChevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook?Chevron down iconChevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.

Create a Free Account To Continue Reading

Modal Close icon
OR
    First name is required.
    Last name is required.

The Password should contain at least :

  • 8 characters
  • 1 uppercase
  • 1 number
Notify me about special offers, personalized product recommendations, and learning tips By signing up for the free trial you will receive emails related to this service, you can unsubscribe at any time
By clicking ‘Create Account’, you are agreeing to ourPrivacy Policy andTerms & Conditions
Already have an account? SIGN IN

Sign in to activate your 7-day free access

Modal Close icon
OR
By redeeming the free trial you will receive emails related to this service, you can unsubscribe at any time.

[8]ページ先頭

©2009-2025 Movatter.jp