SlideShare a Scribd company logo
ODOO (OpenERP)
Creating a MODULE
Tarun Behal
Intro..
 OpenERP use open-object server as ORM (I guess everyone is aware of
ORM)
 To build a module, first decide what you want and create a sample
scheme.
 In this presentation, we’ll create a new module for managing our daily
transactions where we’ll keep a log of where and what money we spent
on a particular day
Daily Transaction manager (a start..)
 Each transaction will have a subject, date, amount we spent and note
section where we can write additional note regarding the transaction.
 We can also categorize transaction based on type. For eg: transport,
household and personal.
 This will help us in categorizing where we are spending more.
Daily Transaction manager - Modelling
 Once our schema is finalized, we can easily extract attribute of each field.
 For eg: Subject of transaction is mandatory, Date must be autofilled for
today’s date.
 So final schema will be as follow:
 Subject – mandatory, text field
 Date – Date field, default with current date
 Notes – text field
 Type – selection field
 Amount – mandatory and float
Daily Transaction Manager - Modelling
 Once our modelling is done, we will create a new module for our Daily
Transaction Manager
 To create a new module, first create a folder named daily_transaction
inside app directory of OpenERP
 Inside that create 2 files named __init__.py and __openerp__.py (we’ll
discuss about the files further in the presentation)
__init__.py
 In this file we’ve to write name of all folder and python files which are to be
compiled for this module.
 If any python file or a directory is not listed in this file, then those files will be
ignored which could result in fatal error
 So in our __init__.py we’ve imported our daily_transaction.py file.
__openerp__.py
__openerp__.py (cont..)
 In this file, we’ll write description of our module and its properties. Lets
discuss each field in this file:
 Name, description, version, author and category are used to describe our
module and its version. So each time we make any changes we’ll increase the
version number.
 Depends : Here we specify if our module depends on other module. For eg: if we
are creating an extension to CRM module we’ll specify ‘depends: [‘crm’]’
 Data: Here we specify all xml files related to our project. We’ll discuss about xml in
later part of presentation
 Installable & Auto-install : I guess the name is enough to explain these properties.
Now lets move to dirtier part of
creating a module
CODING
daily_transaction.py
 I guess I’ve scared you enough (he he he..!!!!). So lets start with show.
 In this file we’ll write our whole code related to our daily transaction, i.e.
Modelling and Logical part.
 As you’re aware now OpenERP uses ORM, so you don’t have to write any
SQL for modelling.
FAQ : Do we’ve to write all our code in this file? (this was asked by one of
trainee while I was explaining about module development)
ANS: NOOO..!!!!!! . Be smarter..!!!! Create another python file, write your code
and just include that in __init__.py
daily_transaction.py (cont..)
daily_transaction.py (cont..)
 As you can see in previous slide we’ve written our code. Lets discuss each
line in detail now. 
 Line #1: from openerp.osv import fields, osv
 The best explanation so far can be found here (I’m lazy programmer so please
go through this and get the knowledge )
 Line #4: class daily_transaction(osv.osv)
 In this we are creating a class for our daily transaction which is inheriting osv class
of OpenERP. This will provide openerp properties of a module to our module, eg:
name, description, columns, defaults etc.
 Line #5, 6 & 9 are properties of our module
 Line #10 to #20 is our modelling of our module we discussed in Daily
Transaction manager - Modelling
daily_transaction.py (cont..)
 Line #10 to #20 will tell you about power of OpenERP ORM.
 This code is enough to create model of our daily_transaction in the
database as well in user interface and guide us which particular field is
mandatory.
 ‘required=True’ is for adding mandatory attribute to our column.
 Other attribute which could be used here are invisible, readonly etc.
 We can use these attributes as dependent on other field values. For eg: we
can make notes field mandatory only if type is household.
 note: fields.text(‘Notes’, type = {‘household’: [{‘required’:True}]}),
Now our modelling part is done, lets move ahead to UI part now.
daily_transaction_view.xml
 I hope everyone may be thinking we need to write HTML, CSS and JS as
well as write actions to do CRUD operation. But with OpenERP forget about
all of this.
 With OpenERP it’ll take minutes to do complete CRUD operation. So lets
begin with it.
 OpenERP uses xml template to render data.
 So first create a file named daily_transaction_view.xml in our module folder.
daily_transaction_view.xml (cont..)
 In this file, we’ll create our module UI
 So in basic UI following things are included:
 Menu
 List View (with OpenERP, we’ll call it Tree view)
 Form View
 Search View
 Other features like datepicker, calendar, sort, group, additional filtering
using AND/OR operation etc. are key features which comes automatically
with OpenERP.
daily_transaction_view.xml - Menu
 To create menu, we first have to understand our requirements.
 We want our module to have a separate Menu header like any other Sales,
Purchase module
 So out structure will be as follows:
 Daily Transaction (this will be our main menu item for our Module)
 Daily Transaction (this will be our sub menu)
 Daily Transaction (this will list our records and we’ll do CRUD operation here, i.e. action menu)
 So as you can see we’ve to create 3 menus.
daily_transaction_view.xml – Menu
(cont..)
 <!-- Main Menu Related Info -->
 <menuitem name="Daily Transaction" id="base.daily_transaction_root" sequence="60"/>
 <!-- Sub Menu Related Info -->
 <menuitem id="menu_daily_transaction_root" name="Daily Transaction"
parent="base.daily_transaction_root" sequence="1" />
 <!– Action Menu Related Info -->
 <menuitem action="action_daily_transaction" id="menu_action_daily_transaction"
parent="menu_daily_transaction_root" sequence="20"/>
So as you can see in our main menu, we have no parent specified. So this will create our parent
menu. In sub menu, we’ve parent, so it’ll create child of that parent menu. And in third we can see
we’ve associated an action to that, so it’ll call that action (we’ll discuss that later in the ppt)
daily_transaction_view.xml – Tree
 To create list/ tree /table, we first have to understand our requirements.
 We want our tree view which will show, subject of our transaction, date of
transaction, type and amount.
 So out structure will be as follows:
 Daily Transaction (this will be our title of List/tree view)
 Subject Date Type Amount
 <Record 1>
 <Record 2>
daily_transaction_view.xml – Tree
(cont..)
This xml will create a record in model ir.ui.view.
<!--Daily Transaction List View-->
<record id="view_daily_transaction_tree" model="ir.ui.view"> <!– here id is the external id for this tree
view which must be unique and will be used for accessing this record -->
<field name="name">daily.transaction.tree</field> <!– this will be our name of record in ir.ui.view -->
<field name="model">daily.transaction</field> <!– this will map out tree view with our daily transaction model -->
<field name="arch" type="xml">
<!-- this will be our title of list/tree view -->
<tree string="Daily Transaction">
<!-- these will automatically map table headers for our list view, so we’ll select out column names of our model here -->
<field name="name"/>
<field name="date"/>
<field name="type"/>
<field name="amount"/>
</tree>
</field>
</record>
daily_transaction_view.xml – Form
We’ll create a simple layout for our form
Subject _______________
Date _________________
Type __<Household><Personal>…..__
Amount _________
Notes
_________________________________
_________________________________
daily_transaction_view.xml – Form
(cont..)
<!--Daily Transaction Form View-->
<record id="view_daily_transaction_form" model="ir.ui.view">
<field name="name">daily.transaction.form.view</field>
<field name="model">daily.transaction</field>
<field name="arch" type="xml">
<!-- this will be our title of list/tree view -->
<form string="Daily Transaction" version="7.0">
<group>
<field name="name"/>
<field name="date"/>
<field name="type"/>
<field name="amount"/>
<field name="note"/>
</group>
</form>
</field>
</record>
CRUD Operation and Controller
 Now I guess you all may be thinking, what the ****. We don’t see how we’ll
click our menu item which will open out list view
 No records were mapped in our list view just like it happens in any other
mvc where we loop over records and render the data
 We didn’t specified which field is mandatory and bla bla..!!!!
 The answer to all such questions is action
 We’ll create another entry in our xml file for action
daily_transaction_view.xml – Action
<record id="action_daily_transaction" model="ir.actions.act_window">
<field name="name">Daily Transaction</field> <!– name of action -->
<field name="res_model">daily.transaction</field> <!– this action will be mapped to model
specified -->
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <!-- these are type of view our module will show
for our daily transaction mode -->
<field name="search_view_id" eval="False"/> <!– here we specify id of our search view -->
<field name="context">{}</field>
<field name="help">Create new daily transaction.</field> <!– help text for our model -->
</record>
daily_transaction_view.xml – Action
(cont..)
 Line #1 as we see we specified id =“action_daily_transaction”. Now lets
rewind to daily_transaction_view.xml – Menu (cont..) and see for third menu
where we specified action. This is how when we click on that menu, this
action will be called.
 For rest all I’ve mention comment on each line
daily_transaction_view.xml
Now wrap the complete xml code we discussed for menu, list, form and action in
following tags:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
_____________________our code here________________
_____________________our code here________________
</data>
</openerp>
Once done, we’ve to tell OpenERP that this will render view of our module. So we’ll
make entry for the filename in __openerp__.py
Install our module
Once done, now lets install our module and start managing our daily
transaction. So for that following steps need to be followed:
 Step 1: Restart openerp server. (service openerp-server restart)
 Step 2: Login to openerp.
 Step 3: Goto Settings-> Modules -> Update Modules List
Install our module
 Step 4: Click on Update
 Step 5: Once done, remove installed filter and search for our module name
Install our module
 Step 6: Click on Install or you can see module properties by clicking on
module name
Manage our daily transactions
Once installation is done, you can see our module name in menu bar.
Menu #1
Menu #2
Menu #3
Manage our daily transactions -
Create
Click on create and let’s start posting our transactions
Manage our daily transactions – List/
Tree view
“
”
Thank you… 
I would really appreciate your feedback. If you feel that something is missing,
please post your comment. The code is available here. Feel free to email me
at tarunbehal@hotmail.com

More Related Content

PDF
Query Worker Contracts Details Oracle Fusion Cloud
PPTX
Empower your App by Inheriting from Odoo Mixins
PPT
Sla and cost acctg
PDF
Sap workflow training
PDF
Odoo Functional Training
PDF
Abap reports
PPT
Automatic Attachment in Oracle Order Management
PDF
Odoo implementation
Query Worker Contracts Details Oracle Fusion Cloud
Empower your App by Inheriting from Odoo Mixins
Sla and cost acctg
Sap workflow training
Odoo Functional Training
Abap reports
Automatic Attachment in Oracle Order Management
Odoo implementation

What's hot (20)

PDF
Odoo External API
PPTX
What is Cross Docking in Odoo 15
PPTX
Odoo 13 project management
PPTX
Manufacturing erp with odoo (odoo mrp)
PPTX
Odoo introduction
PPTX
ODOO FEATURES ,PRICE ,ALTERNATIVES
PPTX
Common Performance Pitfalls in Odoo apps
PDF
Odoo Implementation Methodology
PDF
Form personalization 395117_r12_updated1212
PPTX
Odoo ERP functional
DOCX
Oracle Process Manufacturing Setup EBS12.2
PPTX
Odoo ERP Basic Module.pptx
PDF
BI Publisher Data model design document
PDF
55811936 product-costing-cost-estimation-in-sap
PPTX
Odoo ORM Methods | Object Relational Mapping in Odoo15
PDF
How to Debug the Fast Formula.pdf
PPTX
Kingsleys Power Point Presentation on Operations Management.pptx
PDF
Otbi and bicc_psr_technote_v3_final_document
PPTX
Defining Kanban View in Odoo15 | Advanced Views
PPS
Abap web dynpro
Odoo External API
What is Cross Docking in Odoo 15
Odoo 13 project management
Manufacturing erp with odoo (odoo mrp)
Odoo introduction
ODOO FEATURES ,PRICE ,ALTERNATIVES
Common Performance Pitfalls in Odoo apps
Odoo Implementation Methodology
Form personalization 395117_r12_updated1212
Odoo ERP functional
Oracle Process Manufacturing Setup EBS12.2
Odoo ERP Basic Module.pptx
BI Publisher Data model design document
55811936 product-costing-cost-estimation-in-sap
Odoo ORM Methods | Object Relational Mapping in Odoo15
How to Debug the Fast Formula.pdf
Kingsleys Power Point Presentation on Operations Management.pptx
Otbi and bicc_psr_technote_v3_final_document
Defining Kanban View in Odoo15 | Advanced Views
Abap web dynpro
Ad

Viewers also liked (9)

PPTX
Timesheet based payroll
PDF
Development Odoo Basic
PPTX
Xml operations in odoo
PPTX
Widgets in odoo
PPTX
Odoo Web Services
PPTX
How to configure PyCharm for Odoo development in Windows?
PDF
User Manual For Crafito Odoo Theme
PDF
Odoo - Create themes for website
PDF
Odoo - Backend modules in v8
Timesheet based payroll
Development Odoo Basic
Xml operations in odoo
Widgets in odoo
Odoo Web Services
How to configure PyCharm for Odoo development in Windows?
User Manual For Crafito Odoo Theme
Odoo - Create themes for website
Odoo - Backend modules in v8
Ad

Similar to Odoo (OpenERP) - Creating a module (20)

PPTX
Report Actions In Odoo 17 - Odoo 17 Slides
DOC
Workflow demo
PPT
Synapse india reviews on drupal 7 entities (stanford)
PPTX
How to Create and Manage Wizard in Odoo 17
PPTX
Tips On Trick Odoo Add-On.pptx
PPT
Introduction to Mangento
PPT
Mangento
PPT
Mageguru - magento custom module development
PPTX
How to Create Cohort View in Odoo 17 - Odoo 17 Slides
PPTX
Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.
PDF
Connecting your Python App to OpenERP through OOOP
PDF
Django 1.10.3 Getting started
PPTX
Client Actions In Odoo 17 - Odoo 17 Slides
PPT
RomaFramework Tutorial Basics
DOCX
How To Add A Custom Button To The Chatter In Odoo 18 ?
PPTX
How to add Many2Many fields in odoo website form.pptx
PDF
Introduction to Django
PPTX
How to Create & Manage a Dashboard Using OWL in Odoo 17
PPTX
Symfony2 Introduction Presentation
PDF
Programming Building Blocks for Admins
Report Actions In Odoo 17 - Odoo 17 Slides
Workflow demo
Synapse india reviews on drupal 7 entities (stanford)
How to Create and Manage Wizard in Odoo 17
Tips On Trick Odoo Add-On.pptx
Introduction to Mangento
Mangento
Mageguru - magento custom module development
How to Create Cohort View in Odoo 17 - Odoo 17 Slides
Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.
Connecting your Python App to OpenERP through OOOP
Django 1.10.3 Getting started
Client Actions In Odoo 17 - Odoo 17 Slides
RomaFramework Tutorial Basics
How To Add A Custom Button To The Chatter In Odoo 18 ?
How to add Many2Many fields in odoo website form.pptx
Introduction to Django
How to Create & Manage a Dashboard Using OWL in Odoo 17
Symfony2 Introduction Presentation
Programming Building Blocks for Admins

Recently uploaded (20)

PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Transform Your Business with a Software ERP System
PPTX
Introduction to Artificial Intelligence
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Design an Analysis of Algorithms I-SECS-1021-03
2025 Textile ERP Trends: SAP, Odoo & Oracle
Transform Your Business with a Software ERP System
Introduction to Artificial Intelligence
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Odoo Companies in India – Driving Business Transformation.pdf
CHAPTER 2 - PM Management and IT Context
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PTS Company Brochure 2025 (1).pdf.......
VVF-Customer-Presentation2025-Ver1.9.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Reimagine Home Health with the Power of Agentic AI​
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Operating system designcfffgfgggggggvggggggggg
Upgrade and Innovation Strategies for SAP ERP Customers

Odoo (OpenERP) - Creating a module

  • 1. ODOO (OpenERP) Creating a MODULE Tarun Behal
  • 2. Intro..  OpenERP use open-object server as ORM (I guess everyone is aware of ORM)  To build a module, first decide what you want and create a sample scheme.  In this presentation, we’ll create a new module for managing our daily transactions where we’ll keep a log of where and what money we spent on a particular day
  • 3. Daily Transaction manager (a start..)  Each transaction will have a subject, date, amount we spent and note section where we can write additional note regarding the transaction.  We can also categorize transaction based on type. For eg: transport, household and personal.  This will help us in categorizing where we are spending more.
  • 4. Daily Transaction manager - Modelling  Once our schema is finalized, we can easily extract attribute of each field.  For eg: Subject of transaction is mandatory, Date must be autofilled for today’s date.  So final schema will be as follow:  Subject – mandatory, text field  Date – Date field, default with current date  Notes – text field  Type – selection field  Amount – mandatory and float
  • 5. Daily Transaction Manager - Modelling  Once our modelling is done, we will create a new module for our Daily Transaction Manager  To create a new module, first create a folder named daily_transaction inside app directory of OpenERP  Inside that create 2 files named __init__.py and __openerp__.py (we’ll discuss about the files further in the presentation)
  • 6. __init__.py  In this file we’ve to write name of all folder and python files which are to be compiled for this module.  If any python file or a directory is not listed in this file, then those files will be ignored which could result in fatal error  So in our __init__.py we’ve imported our daily_transaction.py file.
  • 8. __openerp__.py (cont..)  In this file, we’ll write description of our module and its properties. Lets discuss each field in this file:  Name, description, version, author and category are used to describe our module and its version. So each time we make any changes we’ll increase the version number.  Depends : Here we specify if our module depends on other module. For eg: if we are creating an extension to CRM module we’ll specify ‘depends: [‘crm’]’  Data: Here we specify all xml files related to our project. We’ll discuss about xml in later part of presentation  Installable & Auto-install : I guess the name is enough to explain these properties.
  • 9. Now lets move to dirtier part of creating a module CODING
  • 10. daily_transaction.py  I guess I’ve scared you enough (he he he..!!!!). So lets start with show.  In this file we’ll write our whole code related to our daily transaction, i.e. Modelling and Logical part.  As you’re aware now OpenERP uses ORM, so you don’t have to write any SQL for modelling. FAQ : Do we’ve to write all our code in this file? (this was asked by one of trainee while I was explaining about module development) ANS: NOOO..!!!!!! . Be smarter..!!!! Create another python file, write your code and just include that in __init__.py
  • 12. daily_transaction.py (cont..)  As you can see in previous slide we’ve written our code. Lets discuss each line in detail now.   Line #1: from openerp.osv import fields, osv  The best explanation so far can be found here (I’m lazy programmer so please go through this and get the knowledge )  Line #4: class daily_transaction(osv.osv)  In this we are creating a class for our daily transaction which is inheriting osv class of OpenERP. This will provide openerp properties of a module to our module, eg: name, description, columns, defaults etc.  Line #5, 6 & 9 are properties of our module  Line #10 to #20 is our modelling of our module we discussed in Daily Transaction manager - Modelling
  • 13. daily_transaction.py (cont..)  Line #10 to #20 will tell you about power of OpenERP ORM.  This code is enough to create model of our daily_transaction in the database as well in user interface and guide us which particular field is mandatory.  ‘required=True’ is for adding mandatory attribute to our column.  Other attribute which could be used here are invisible, readonly etc.  We can use these attributes as dependent on other field values. For eg: we can make notes field mandatory only if type is household.  note: fields.text(‘Notes’, type = {‘household’: [{‘required’:True}]}), Now our modelling part is done, lets move ahead to UI part now.
  • 14. daily_transaction_view.xml  I hope everyone may be thinking we need to write HTML, CSS and JS as well as write actions to do CRUD operation. But with OpenERP forget about all of this.  With OpenERP it’ll take minutes to do complete CRUD operation. So lets begin with it.  OpenERP uses xml template to render data.  So first create a file named daily_transaction_view.xml in our module folder.
  • 15. daily_transaction_view.xml (cont..)  In this file, we’ll create our module UI  So in basic UI following things are included:  Menu  List View (with OpenERP, we’ll call it Tree view)  Form View  Search View  Other features like datepicker, calendar, sort, group, additional filtering using AND/OR operation etc. are key features which comes automatically with OpenERP.
  • 16. daily_transaction_view.xml - Menu  To create menu, we first have to understand our requirements.  We want our module to have a separate Menu header like any other Sales, Purchase module  So out structure will be as follows:  Daily Transaction (this will be our main menu item for our Module)  Daily Transaction (this will be our sub menu)  Daily Transaction (this will list our records and we’ll do CRUD operation here, i.e. action menu)  So as you can see we’ve to create 3 menus.
  • 17. daily_transaction_view.xml – Menu (cont..)  <!-- Main Menu Related Info -->  <menuitem name="Daily Transaction" id="base.daily_transaction_root" sequence="60"/>  <!-- Sub Menu Related Info -->  <menuitem id="menu_daily_transaction_root" name="Daily Transaction" parent="base.daily_transaction_root" sequence="1" />  <!– Action Menu Related Info -->  <menuitem action="action_daily_transaction" id="menu_action_daily_transaction" parent="menu_daily_transaction_root" sequence="20"/> So as you can see in our main menu, we have no parent specified. So this will create our parent menu. In sub menu, we’ve parent, so it’ll create child of that parent menu. And in third we can see we’ve associated an action to that, so it’ll call that action (we’ll discuss that later in the ppt)
  • 18. daily_transaction_view.xml – Tree  To create list/ tree /table, we first have to understand our requirements.  We want our tree view which will show, subject of our transaction, date of transaction, type and amount.  So out structure will be as follows:  Daily Transaction (this will be our title of List/tree view)  Subject Date Type Amount  <Record 1>  <Record 2>
  • 19. daily_transaction_view.xml – Tree (cont..) This xml will create a record in model ir.ui.view. <!--Daily Transaction List View--> <record id="view_daily_transaction_tree" model="ir.ui.view"> <!– here id is the external id for this tree view which must be unique and will be used for accessing this record --> <field name="name">daily.transaction.tree</field> <!– this will be our name of record in ir.ui.view --> <field name="model">daily.transaction</field> <!– this will map out tree view with our daily transaction model --> <field name="arch" type="xml"> <!-- this will be our title of list/tree view --> <tree string="Daily Transaction"> <!-- these will automatically map table headers for our list view, so we’ll select out column names of our model here --> <field name="name"/> <field name="date"/> <field name="type"/> <field name="amount"/> </tree> </field> </record>
  • 20. daily_transaction_view.xml – Form We’ll create a simple layout for our form Subject _______________ Date _________________ Type __<Household><Personal>…..__ Amount _________ Notes _________________________________ _________________________________
  • 21. daily_transaction_view.xml – Form (cont..) <!--Daily Transaction Form View--> <record id="view_daily_transaction_form" model="ir.ui.view"> <field name="name">daily.transaction.form.view</field> <field name="model">daily.transaction</field> <field name="arch" type="xml"> <!-- this will be our title of list/tree view --> <form string="Daily Transaction" version="7.0"> <group> <field name="name"/> <field name="date"/> <field name="type"/> <field name="amount"/> <field name="note"/> </group> </form> </field> </record>
  • 22. CRUD Operation and Controller  Now I guess you all may be thinking, what the ****. We don’t see how we’ll click our menu item which will open out list view  No records were mapped in our list view just like it happens in any other mvc where we loop over records and render the data  We didn’t specified which field is mandatory and bla bla..!!!!  The answer to all such questions is action  We’ll create another entry in our xml file for action
  • 23. daily_transaction_view.xml – Action <record id="action_daily_transaction" model="ir.actions.act_window"> <field name="name">Daily Transaction</field> <!– name of action --> <field name="res_model">daily.transaction</field> <!– this action will be mapped to model specified --> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <!-- these are type of view our module will show for our daily transaction mode --> <field name="search_view_id" eval="False"/> <!– here we specify id of our search view --> <field name="context">{}</field> <field name="help">Create new daily transaction.</field> <!– help text for our model --> </record>
  • 24. daily_transaction_view.xml – Action (cont..)  Line #1 as we see we specified id =“action_daily_transaction”. Now lets rewind to daily_transaction_view.xml – Menu (cont..) and see for third menu where we specified action. This is how when we click on that menu, this action will be called.  For rest all I’ve mention comment on each line
  • 25. daily_transaction_view.xml Now wrap the complete xml code we discussed for menu, list, form and action in following tags: <?xml version="1.0" encoding="utf-8"?> <openerp> <data> _____________________our code here________________ _____________________our code here________________ </data> </openerp> Once done, we’ve to tell OpenERP that this will render view of our module. So we’ll make entry for the filename in __openerp__.py
  • 26. Install our module Once done, now lets install our module and start managing our daily transaction. So for that following steps need to be followed:  Step 1: Restart openerp server. (service openerp-server restart)  Step 2: Login to openerp.  Step 3: Goto Settings-> Modules -> Update Modules List
  • 27. Install our module  Step 4: Click on Update  Step 5: Once done, remove installed filter and search for our module name
  • 28. Install our module  Step 6: Click on Install or you can see module properties by clicking on module name
  • 29. Manage our daily transactions Once installation is done, you can see our module name in menu bar. Menu #1 Menu #2 Menu #3
  • 30. Manage our daily transactions - Create Click on create and let’s start posting our transactions
  • 31. Manage our daily transactions – List/ Tree view
  • 32. “ ” Thank you…  I would really appreciate your feedback. If you feel that something is missing, please post your comment. The code is available here. Feel free to email me at tarunbehal@hotmail.com