2. Indice
.- Cos' 竪 un modulo?
.- Files
.- Viste, Azioni, Menu e altre interfacce
.- Ereditariet
.- Introduzione al modulo 1
* __init__.py
* __openerp__.py
* modulo_1.py
* modulo_1_view.xml
.- Introduzione al modulo 2
* __init__.py
* __openerp__.py
* modulo_2.py
* modulo_2_view.xml
Sviluppo moduli su OpenERP v7.0
3. Cos'竪 un modulo?
La struttura di OpenErp 竪 modulare.
Un modulo in OpenERP 竪 una directory che contiene dei file
prestabiliti oltre a altri che variano a seconda del tipo di funzionalit
implementata.
Sviluppo moduli su OpenERP v7.0
4. Cos'竪 un modulo?
Pi湛 di 1300 moduli OpenERP sono disponibili su http://apps.openerp.com
Sviluppo moduli su OpenERP v7.0
5. Files
I files all'interno di un modulo in OpenERP essenzialmente sono:
Alcuni moduli sono pi湛 robusti e hanno altre sottocartelle come:
report, edi, wizard, process, ecc...
Sviluppo moduli su OpenERP v7.0
6. Files
File __init__.py
Contiene un comando di import del modulo stesso.
Permette caricare il modulo creato.
Sviluppo moduli su OpenERP v7.0
7. Files
File __openerp__.py
Contiene un dizionario python, dove vengono descritte le funzionalit,
dipendenze implementate dal modulo e molto altro ancora.
Sviluppo moduli su OpenERP v7.0
8. Files
File __openerp__.py
Le chiavi del dizionario sono:
'name'
'description'
'version'
'author'
'website'
'category'
'depends'
'installable'
'active'
'init_xml'
'update_xml'
'demo_xml'
...
Sviluppo moduli su OpenERP v7.0
9. Files
File mio_modulo.py
In questo file sono definiti gli oggetti che compongono le view del
modulo e quelli del database.
Sviluppo moduli su OpenERP v7.0
10. Files
File mio_modulo.py
Attributi degli oggetti:
_name
_description(facoltativo)
_inherit(facoltativo)
_columns
_constraints(facoltativo)
_sql_constraints(facoltativo)
_defaults
_order(facoltativo)
_log_access
Sviluppo moduli su OpenERP v7.0
11. Files
File mio_modulo.py
Tipi dati:
boolean: assume valore True o False
Esempio:
'active': fields.boolean('Active')
integer integer_big: valori interi positivi o negativi
Esempio:
'id': fields.integer('Inventory Line Id', readonly=True)
selection: lista di valori che il campo pu嘆 assumere
Esempio: fields.selection([('draft','Draft'),
('open','Opened'),
('close','Accepted'),('cancel','Canceled')],
'Status', readonly=True)
float: valori decimali
char: stringa con una dimensione massima
text: stringa senza dimensione massima
Esempio:
'note': fields.text('Description', translate=True)
date: data
...
Sviluppo moduli su OpenERP v7.0
13. Files
File mio_modulo_view.xml
Interfacce utente per gestire gli oggetti definiti nel model.
<?xml version="1.0" encoding="utf-8"? >
<openerp >
<data >
[view definitions]
</data >
</openerp >
Sviluppo moduli su OpenERP v7.0
14. Viste, Azioni, Menu e altre
interfacce
Tipologie di Viste:
form view
tree view
search view
graph (grafici)
gantt (Diagramma di gantt)
calendar (calendario)
...
Sviluppo moduli su OpenERP v7.0
15. Viste, Azioni, Menu e altre
interfacce
Struttura XML delle viste
<record model="ir.ui.view"
id="identificativo_univoco_della_vista">
<field name="name">nome.vista</field>
<field name="model">nome_oggetto</field> # oggetto sul
quale la vista 竪 definita
<field name="type">form</field> # tree, form,
calendar, search, graph, gantt
<field name="arch" type="xml"> # architettura della
vista
<!-- architettura e definizione della vista:
<form>, <tree>, <graph>, -->
</field>
</record>
Sviluppo moduli su OpenERP v7.0
16. Viste, Azioni, Menu e altre
interfacce
Azioni
Azioni che determina il comportamento del sistema a seguito di un evento.
Struttura XML delle azioni
<!-- Action -->
<record model="ir.actions.act_window" id="nome_uniovoco">
<field name="name">nome_desc</field>
<field name="res_model">nome.modello</field>
<field name="view_type">tipo_vista</field>
</record>
Sviluppo moduli su OpenERP v7.0
17. Viste, Azioni, Menu e altre
interfacce
Menu
Azioni che determina il comportamento del sistema a seguito di un evento.
Struttura XML dei menu
<menuitem name="nome_menu"
parent="base.menu_tools" id="nome_menu1" sequence="4"/>
<menuitem
name="nome_menu" parent="nome_menu1"
id="nome_menu_tree"
action="action_nome_menu_tree"/>
Sviluppo moduli su OpenERP v7.0
18. Ereditariet
Inherit Model
_inherit='object.name'
Inherit for Extension (_name == _inherit):
class res_partner(osv.osv):
_name = 'res.partner'
_inherit="res.partner"
_columns = {
'codcompanyclient': fields.integer('Code Company
Client',size=4),
'nit': fields.char('NIT',size=10),
'disp': fields.boolean('Disponibilita'),
'es_impiegato': fields.boolean('Es Impiegato'),
}
res_partner()
Sviluppo moduli su OpenERP v7.0
19. Ereditariet
Inheritance by prototyping (_name != _inherit):
class other_material(osv.osv):
_name = 'other.material'
_inherit = 'network.material'
_columns = {
'manuf_warranty': fields.boolean('Manufacturer
warranty?'),
}
_defaults = {
'manuf_warranty': lambda *a: False,
}
other_material()
Sviluppo moduli su OpenERP v7.0
20. Ereditariet
Inheritance by Delegation:
class tiny_object(osv.osv)
_name = 'tiny.object'
_table = 'tiny_object'
_inherits = {
'tiny.object_a': 'object_a_id',
'tiny.object_b': 'object_b_id',
... ,
'tiny.object_n': 'object_n_id'
}
(...)
Sviluppo moduli su OpenERP v7.0