Creating a MODULE Tarun Behal

Slides:



Advertisements
Similar presentations
RP Designs Semi-Custom e-Commerce Package. Overview RP Designs semi- custom e-commerce package is a complete website solution. Visitors can browse a catalog.
Advertisements

With Folder HelpDesk for Outlook, support centres and other helpdesks can work efficiently with support cases inside Microsoft Outlook. The support tickets.
With Public Folder HelpDesk for Outlook, support centres and other helpdesks can work efficiently with support cases inside Microsoft Outlook. The support.
A Toolbox for Blackboard Tim Roberts
Microsoft Excel 2003 Illustrated Complete Excel Files and Incorporating Web Information Sharing.
The Way to Success … Sta rt Sta rt Ak Technologies Mo | Visit.
Calendar Browser is a groupware used for booking all kinds of resources within an organization. Calendar Browser is installed on a file server and in a.
PayDox applications All features can be used independently.
Calendar Browser is a groupware used for booking all kinds of resources within an organization. The software is totally integrated in Outlook. Calendar.
Microsoft Office Word 2013 Expert Microsoft Office Word 2013 Expert Courseware # 3251 Lesson 4: Working with Forms.
Classroom User Training June 29, 2005 Presented by:
Denise Luther Senior IT Consultant Practical Technology Enablement with Enterprise Integrator.
® IBM Software Group © 2009 IBM Corporation Rational Publishing Engine RQM Multi Level Report Tutorial David Rennie, IBM Rational Services A/NZ
Eric Westfall – Indiana University Jeremy Hanson – Iowa State University Building Applications with the KNS.
ICP Kit 2011 HHC Data Entry Module The World Bank ICP Kit Training African Development Bank.
Creating Effective School and PTA Websites Sam Farnsworth Utah PTA Technology Specialist
PHP meets MySQL.
Session 1 SESSION 1 Working with Dreamweaver 8.0.
Management Information Systems MS Access MS Access is an application software that facilitates us to create Database Management Systems (DBMS)
1 OPOL Training (OrderPro Online) Prepared by Christina Van Metre Independent Educational Consultant CTO, Business Development Team © Training Version.
MS Access 2007 Management Information Systems 1. Overview 2  What is MS Access?  Access Terminology  Access Window  Database Window  Create New Database.
Forms and Server Side Includes. What are Forms? Forms are used to get user input We’ve all used them before. For example, ever had to sign up for courses.
6 th Annual Focus Users’ Conference 6 th Annual Focus Users’ Conference Import Testing Data Presented by: Adrian Ruiz Presented by: Adrian Ruiz.
Transportation Agenda 77. Transportation About Columns Each file in a library and item in a list has properties For example, a Word document can have.
Forms Manager. What is Forms Manager? Forms Manager is a completely new online form creation and form data management tool.
SurveyDIG 2.1 Tutorial. Tutorial Contents Introduction Introduction Item Groups Item Groups –Creating new Groups –Naming Convention –Searching/Editing.
NIMAC for Accessible Media Producers: February 2013 NIMAC 2.0 for AMPs.
Joomla Awdhesh Kumar Singsys Pte Ltd. What is Joomla? Joomla is an award-winning content management system (CMS), which enables you to build Web sites.
With Folder HelpDesk for Outlook, support centres and other helpdesks can work efficiently with support cases inside Microsoft Outlook. The support tickets.
Please wait, Our presentation will be starting soon. Use Alt+Tab key to go to other applications while the presentation is running. Use Esc key to stop.
Inquiry Tracking. Inquiry Tracking :: Logon Non-Weidmuller employees use the first initial of your first name and your full last name. (i.e. bjones for.
 1- Definition  2- Helpdesk  3- Asset management  4- Analytics  5- Tools.
1 Terminal Management System Usage Overview Document Version 1.1.
Getting Started With HTML
Section 10.1 Define scripting
Compatible with the latest browsers; Chrome, Safari, Firefox, Opera and Internet Explorer 9 and above.
User Manual for Contact Management Customer Relationship Management (CRM) for Bursa Malaysia 2014 Version 1.0 | 4 September 2014.
Introduction to the new robust security system from SCC.
Project Management: Messages
SurveyDIG 2.1 Tutorial.
Mail Merge for Lotus Notes and Excel User Guide
CONTENT MANAGEMENT SYSTEM CSIR-NISCAIR, New Delhi
Mail Merge for Lotus Notes and Excel User Guide
CONTENT MANAGEMENT SYSTEM CSIR-NISCAIR, New Delhi
LOCO Extract – Transform - Load
HOW TO CREATE A MODULE IN ODOO. INTRODUCTION For those who are in starting stage of Odoo development, it is a tough task for creating.
Regional Architecture Development for Intelligent Transportation
Parent Assistant Overview
Submitting Requests to IT
Download/Upload Receipts
RAD-IT Architecture Software Training
Using Excel with Google Maps
(Global / All Markets View)
iCIMS 17.3 Release: Highlights
Upload/Download Receipts
James Blankenship March , 2018
Unreal Engine and C++ We’re finally at a point where we can start working in C++ with Unreal Engine To get everything set up for this properly, we’re going.
Oracle Sales Cloud Sales campaign
FTS 2 Failure Tracking System 2 Repair Process Flow
Welcome to the Quantitative Trait Loci (QTL) Tutorial
Mendeley Overview VISHAL GUPTA Customer Consultant South Asia
Lab 2 and Merging Data (with SQL)
Download from Zotero Home Page
King Saud University College of Business Administration Management Information Systems MS ACCESS.
Rational Publishing Engine RQM Multi Level Report Tutorial
5.00 Apply procedures to organize content by using Dreamweaver. (22%)
Unit J: Creating a Database
Mendeley Overview VISHAL GUPTA Customer Consultant South Asia
Presentation transcript:

Creating a MODULE Tarun Behal 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________________ </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