Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Development Odoo Basic

6 295 vues

Publié le

Development Odoo Basic

Publié dans : Ingénierie
  • Login to see the comments

Development Odoo Basic

  1. 1. Development Odoo Basic by @mario21ic
  2. 2. Agenda ●  Introducción ●  Configuración de módulos ●  Creación de un módulo ●  Definición de menu, action, vista ●  Fundamentos básicos de objetos ●  Vistas bussiness document
  3. 3. ¿Qué es? ●  ERP + CMS ●  MVC ●  OpenObject ●  Python ●  PostgreSQL ●  Flexible ●  OpenSource
  4. 4. Arquitectura
  5. 5. Modelo MVC •  Model: todo_model.py •  View: todo_view.xml •  Controller: ORM y métodos
  6. 6. ●  Debian/Ubuntu derivados: Descargar de: http://nightly.odoo.com/8.0/nightly/deb/odoo_8.0.latest_all.deb $ sudo dpkg –i odoo*.deb $ sudo apt-get install -f ●  RedHat/CentOS/Fedora derivados: Descargar de: http://nightly.odoo.com/8.0/nightly/rpm/odoo_8.0.latest.noarch.rpm $ sudo rpm –Uvh odoo*.rpm Instalación - Paquetería
  7. 7. Instalación - Docker ●  PostgreSQL: $ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres ●  Odoo: $ docker run -p 127.0.0.1:8069:8069 --name odoo --link db:db - t odoo ●  Acciones: $ docker stop|start|restart odoo
  8. 8. Instalación - Docker-compose web: image: odoo:8 volumes: - ./todo_app:/mnt/extra-addons/todo_app links: - db ports: - "8069:8069" db: image: postgres:latest environment: POSTGRES_USER: odoo POSTGRES_PASSWORD: odoo Luego ejecutar: $ docker-compose up Crear archivo: docker-compose.yml
  9. 9. Creating database
  10. 10. Quick tour
  11. 11. Technical features
  12. 12. Technical features
  13. 13. Estructura de un módulo nombre_modulo/ security/ ir.model.access.csv i18n/ es_PE.po submodulo/ __init__.py submodulo.py modulo_view.xml modulo.py __init__.py __openerp__.py
  14. 14. __openerp__.py { 'name': 'To-Do Application', 'description': 'Maneja tus tareas personales', 'author': 'taller', 'depends': [’mail'], 'application': True, } https://www.odoo.com/documentation/8.0/reference/module.html
  15. 15. Actualizando lista de módulos
  16. 16. Instalando module
  17. 17. Modelo: todo_model.py # -*- coding: utf-8 -*- from openerp import models, fields class TodoTask(models.Model): _name = 'todo.task' name = fields.Char('Description', required=True) is_done = fields.Boolean('Done?') active = fields.Boolean('Active?', default=True)
  18. 18. Importando model •  Archivo __init__.py: from . import todo_model
  19. 19. Actualizando module
  20. 20. Campos predefinidos •  id •  create_date •  create_uid •  write_date •  write_uid
  21. 21. View - Structure •  Archivo todo_view.xml: <?xml version="1.0"?> <openerp> <data> <!-- Data --> </data> </openerp>
  22. 22. View - Action •  Agregamos action: <!-- Action to open To-do Task list --> <act_window id="action_todo_task" name="To- do Task" res_model="todo.task" view_mode="tree,form" />
  23. 23. View - Menu •  Agregamos menu: <!-- Menu item to open To-do Task list --> <menuitem id="menu_todo_task" name="To- Do Tasks" parent="mail.mail_feeds" sequence="20" action="action_todo_task" />
  24. 24. Activando todo_view.xml •  Agregar en __openerp__.py ‘data': ['todo_view.xml'],
  25. 25. Vista - Tree
  26. 26. Vista - Form
  27. 27. Vista - Form personalizada •  Agregar el siguiente record: <record id="view_form_todo_task" model="ir.ui.view”> <field name="name">To-do Task Form</field> <field name="model">todo.task</field> <field name="arch" type="xml"> <form string="To-do Task”> <field name="name"/> <field name="is_done"/> <field name="active" readonly="1"/> </form> </field> </record>
  28. 28. Vista - Form personalizada •  Actualizar module y crear:
  29. 29. Vista - Bussines document <form> <header> <!-- Buttons go here --> </header> <sheet> <!-- Content goes here --> <field name="name"/> <field name="is_done"/> </sheet> </form>
  30. 30. Vista - Buttons •  Agregar: <header> <button name="do_toggle_done" type="object" string="Toggle Done" class="oe_highlight" /> <button name="do_clear_done" type="object" string="Clear All Done" /> </header>
  31. 31. Vista - Grupos <sheet> <group name="group_top”> <group name="group_left”> <field name="name"/> </group> <group name="group_right”> <field name="is_done"/> <field name="active" readonly="1"/> </group> </group> </sheet>
  32. 32. Vista - Bussines document •  Actualizar module y crear:
  33. 33. Vista - List <record id="view_tree_todo_task" model="ir.ui.view”> <field name="name">To-do Task Tree</field> <field name="model">todo.task</field> <field name="arch" type="xml”> <tree colors="gray:is_done==True”> <field name="name"/> <field name="is_done"/> </tree> </field> </record>
  34. 34. Vista - List •  Actualizar y ver:
  35. 35. Vista - Search <record id="view_filter_todo_task" model="ir.ui.view”> <field name="name">To-do Task Filter</field> <field name="model">todo.task</field> <field name="arch" type="xml”> <search> <field name="name"/> <filter string="Not Done" domain="[('is_done','=',False)]"/> <filter string="Done" domain="[('is_done','!=',False)]"/> </search> </field> </record>
  36. 36. Vista - Search •  Actualizar y buscar:
  37. 37. Agregando lógicade negocio •  Agregar al inicio de todo_model.py from openerp import models, fields, api •  Y como método: @api.one def do_toggle_done(self): self.is_done = not self.is_done return True
  38. 38. Agregando lógica de negocio @api.multi def do_clear_done(self): done_recs = self.search([('is_done', '=', True)]) done_recs.write({'active': False}) return True
  39. 39. Field - Tipos básicos •  Char •  Boolean •  Integer •  Float •  Text •  Selection •  Date / Datetime •  * Computed Mas info: https://www.odoo.com/documentation/8.0/reference/orm.html#fields
  40. 40. Field - Agregando un Selection •  En todo_model.py agregar: level = fields.Selection(( ('0', 'Urgente'), ('1','Alto'), ('2', 'Normal')), 'Prioridad') •  En todo_view.xml agregar en form y tree: <field name="level"/>
  41. 41. Field - Selection Actualizar module, listar y crear:
  42. 42. Ejercicios •  Agregarle un campo de tipo fecha. •  Al módulo crearle un acceso desde el menú principal •  Agregarle un campo tipo selection que sea generado dinamicamente.

×