官术网_书友最值得收藏!

  • Odoo Development Cookbook
  • Holger Brunn Alexandre Fayolle Daniel Reis
  • 291字
  • 2021-07-16 11:00:33

Adding a monetary field to a Model

Odoo has special support for monetary values related to a currency. Let's see how to use it in a Model.

Note

The Monetary field was introduced in Odoo 9.0 and is not available in previous versions. If you are using Odoo 8.0, the float field type is your best alternative.

Getting ready

We will reuse the my_module addon module from Chapter 3, Creating Odoo Modules.

How to do it…

The monetary field needs a complementary currency field to store the currency for the amounts.

The my_module already has a models/library_book.py defining a basic Model. We will edit this to add the needed fields:

  1. Add the field to store the currency that is to be used:
    class LibraryBook(models.Model):
        # ...
     currency_id = fields.Many2one(
     'res.currency', string='Currency')
    
  2. Add the monetary field to store our amount:
    class LibraryBook(models.Model):
        # ...
     retail_price = fields.Monetary(
     'Retail Price',
     # optional: currency_field='currency_id',
     )
    

Now, upgrade the addon module, and the new fields should be available in the Model. They won't be visible in views until they are added to them, but we can confirm their addition by inspecting the Model fields in Settings | Technical | Database Structure | Models.

How it works…

Monetary fields are similar to Float fields, but Odoo is able to represent them correctly in the user interface since it knows what their currency is through a second field for that purpose.

This currency field is expected to be named currency_id, but we can use whatever field name we like as long as it is indicated using the currency_field optional parameter. You might like to know that the decimal precision for the amount is taken from the currency definition (the decimal_precision field of the res.currency model).

主站蜘蛛池模板: 普宁市| 湾仔区| 贺兰县| 千阳县| 阆中市| 凤城市| 麟游县| 鹤庆县| 麻栗坡县| 尚志市| 金堂县| 平泉县| 望江县| 安阳县| 吉隆县| 阿坝| 侯马市| 多伦县| 汪清县| 通州市| 金湖县| 常德市| 汨罗市| 长宁区| 昌黎县| 普兰县| 越西县| 枝江市| 灵璧县| 正安县| 克山县| 卓尼县| 竹山县| 开远市| 丹江口市| 涞水县| 东乡县| 尼勒克县| 林芝县| 石家庄市| 中超|