Sie sind auf Seite 1von 33

TING!

CICLOS DE NEGOCIO
ting! Tecnologas Inteligentes de Software S.L.

FORMACIN TCNICA MADRID 19-23 JULIO 2010

JULIO 2010

V2.0

ndice
I.
I. II. III. IV.

HERENCIA
DEPENDENCIA ENTRE MDULOS HERENCIA DE LOS MODELOS HERENCIA DE LAS VISTAS MODIFICACIN DEL MDULO BASE: CAMBIOS EN EL FORMULARIO DE EMPRESA Y CONTACTO

II. III.
I. II. III.

ESTADOS Y FLUJOS DE TRABAJO (WORKFLOW) CONTROLADOR (LGICA) Y ASISTENTES


LGICA DE LA APLICACIN: MTODOS PREDEFINIDOS: SEARCH, READ, BROWSE, CREATE, WRITE, UNLINK, ... HERENCIA DE MTODOS: SUPER() PROGRAMACIN DE ASISTENTES: ESTADOS, TIPOS DE ESTADOS, FORMULARIOS, TRANSICIONES

IV.
V.
I. II.

ACCIONES DE SERVIDOR
TABLEROS
POR DEFECTO OPENERP. CREACIN DE UNO A MEDIDA.

VI.

EJERCICIO PRCTICO

ndice

I. FLUJOS DE TRABAJO (WORKFLOW) II. WIZARDS

III. ACCIONES DE SERVIDOR


IV. TABLEROS

Workflows

I.

FLUJOS DE TRABAJO (WORKFLOW)

Lgica de los Workflows

Grficos de la lgica de negocio :

Lgica de los Workflows


Nodos
Accin Sub-Workflows

Transiciones
Condiciones
Rol Python

Pulsacin de botn

Join & split


AND,

OR,
XOR

Lgica de los Workflows

Ejemplo de Workflow

Seguir uno existente


mrp_repairs

Workflows: terminologa
Definiciones de la WfMC (Workflow Management Coalition) Workflow: el grafo Actividad: un nodo del grafo Transicin: una arista entre dos nodos del grafo

Instancia: una instancia de un workflow para un documento


particular Workitem: un nodo en ejecucin, puede haber varios por

instancia

Definiendo un workflow
Definir el workflow
name: nombre del workflow osv: nombre del objeto on_create: si debe instanciarse un workflow con la creacin del objeto

Definir (un listado de) nodos Definir (un listado de) transiciones

Actividades (1)
Campos de nodos/actividades
wkf_id flow_start flow_stop kind
dummy (no hace nada) function (llama a un mtodo de un objeto) subflow (llama a un subworkflow) Stopall (en cuanto llega a este nodo el workflow finaliza)

action (= nombre del mtodo)


si kind es del tipo function o subflow

subflow_id
si kind = subflow <field name="subflow_id" search="[('name','=','account.invoice.basic')]"/>

split mode (ver siguiente diapositiva) join mode

Actividades (2)

Actividades (3)
Join Mode
XOR
Si el join mode est definido como xor este nodo del workflow se activar en la primera transicin que llegue a l. En cambio si est definido como and el nodo solamente se activar cuando se completen todas las transiciones que llegan hasta ese nodo

AND

Split Mode
XOR
Si el split mode est definido como XOR se enviara el flujo solamente a la siguiente transicin vlida a la que apunte Enva el flujo a todas las transiciones vlidas (0 o varias) de manera secuencial.

OR

AND
Enva el flujo a todas las transiciones vlidas a la vez.

Transiciones
Campos: act_from: id de la actividad de origen act_to: id de la actividad destino condition: expresin en python signal: nombre de un botn role_id: rol necesario para ejecutar la transicin Expresiones: sintxis en python, se pueden usar los campos del objeto Ejemplo: zip == 1400 phone == mobile

WIZARDS

II. WIZARDS

Entorno de desarrollo
Principios Definicion Clase Campos Formularios Metodos Registrando wizards

Wizard : Principio o

Un wizard es una succesin de pasos. Un paso est compuesto por varias acciones: 1. Enviar un formulario al cliente con algunos botones 2. Recibir el formulario con los datos y los botones pulsados por el cliente 3. Ejecutar alguna accin 4. Enviar una nueva accin al cliente (formulario, imprimir, ...)

Ejemplo de wizard

Definicin : class
class wizard_class(wizard.interface): states = { 'init': { 'actions': [], 'result': ... 'state_name': { 'actions': [_method_name], 'result': ... } } wizard_class('wizard.name')

Definicin : class
class part_sms(wizard.interface): states = { 'init': { 'actions': [_get_value], 'result': {'type': 'form', 'arch':sms_send_form, 'fields': sms_send_fields, 'state':[('send','Send SMS'), ('end','Cancel')]}, 'send': { 'actions': [_sms_send], 'result': {'type': 'state', 'state':'end'} } } part_sms('res.partner.sms_send')

Class
Actions Acciones que se pueden ejecutar en los distintos pasos Result: tipos posibles form -> arch, fields, state Ejemple: 'result': { 'type': 'form', 'arch': sms_send_form, 'fields': sms_send_fields, 'state': [('send','Send SMS'), ('end','Cancel')] }, state -> state print -> report, state

Definicin : campos
Campos sms_send_fields = { 'app_id': {'string':'API ID', 'type':'char', 'required':True}, 'user': {'string':'Login', 'type':'char', 'required':True}, 'password': {'string':'Password', 'type':'char', 'required':True}, 'text': {'string':'SMS Message', 'type':'text', 'required':True} }

Definicin : Formularios
Formularios sms_send_form = '''<?xml version="1.0"?> <form string="SMS"> <separator string="Bulk SMS send" colspan="4"/> <field name="app_id"/> <newline/> <field name="user"/> <field name="password"/> <newline/> <field name="text" colspan="3"/> </form>'''

Definicin : Metodos de accin


Metodos de accin Signatura : def _nombre_mtodo(self, uid, data): Uid Data = diccionario - data['ids'] - data['form'] Retorno : return {'field_name': value, ...}

Definicin : Aadir Botn de ejecucin


Debemos crear tambin un archivo xml para indicar a openERP desde donde queremos acceder a ese wizard
<wizard id="res_partner_send_sms_wizard" model="res.partner" name="res.partner.sms_send" string="Send SMS"/>

Acciones de servidor
Las acciones del servidor son una funcionalidad bastante potente de

OpenERP. Permiten, llegado un momento desencadenar un


determinado tipo de evento programado de antemano. Es muy til, dado que permite automatizar acciones del flujo de trabajo

propio del cliente donde se ha implementado.


Ejemplos:
el envo automtico de emails cuando ocurre algo como la confirmacin de una venta o una factura

la impresin de un determinado documento cuando llega a cierto estado el registro del


objeto al que pertenece (confirmar factura imprime en papel la factura)

Ejecutar un determinado wizard, por ejemplo, el de JIT en fabricacin cada vez que se confirma una orden.

Acciones de servidor
Las acciones del servidor son una funcionalidad bastante potente de

OpenERP. Permiten, llegado un momento desencadenar un


determinado tipo de evento programado de antemano. Es muy til, dado que permite automatizar acciones del flujo de trabajo

propio del cliente donde se ha implementado.


Ejemplos:
el envo automtico de emails cuando ocurre algo como la confirmacin de una venta o una factura

la impresin de un determinado documento cuando llega a cierto estado el registro del


objeto al que pertenece (confirmar factura imprime en papel la factura)

Ejecutar un determinado wizard, por ejemplo, el de JIT en fabricacin cada vez que se confirma una orden.

Registro en el historial de los registros de un objeto, por ejemplo, todas las acciones que afectan a un cliente, se pueden registrar en su pestaa historial.

Acciones de servidor
Las acciones del servidor son una funcionalidad bastante potente de

OpenERP. Permiten, llegado un momento desencadenar un


determinado tipo de evento programado de antemano. Es muy til, dado que permite automatizar acciones del flujo de trabajo

propio del cliente donde se ha implementado.


Ejemplos:
el envo automtico de emails cuando ocurre algo como la confirmacin de una venta o una factura

la impresin de un determinado documento cuando llega a cierto estado el registro del


objeto al que pertenece (confirmar factura imprime en papel la factura)

Ejecutar un determinado wizard, por ejemplo, el de JIT en fabricacin cada vez que se confirma una orden.

Registro en el historial de los registros de un objeto, por ejemplo, todas las acciones que afectan a un cliente, se pueden registrar en su pestaa historial.

Para definirlas (y ver las que estn definidas)


Administracin -> Personalizacin -> Acciones -> Acciones servidor

Acciones de servidor
Las acciones del servidor son una funcionalidad bastante potente de

OpenERP. Permiten, llegado un momento desencadenar un


determinado tipo de evento programado de antemano. Es muy til, dado que permite automatizar acciones del flujo de trabajo

propio del cliente donde se ha implementado.


Ejemplos:
el envo automtico de emails cuando ocurre algo como la confirmacin de una venta o una factura

la impresin de un determinado documento cuando llega a cierto estado el registro del


objeto al que pertenece (confirmar factura imprime en papel la factura)

Ejecutar un determinado wizard, por ejemplo, el de JIT en fabricacin cada vez que se confirma una orden.

Registro en el historial de los registros de un objeto, por ejemplo, todas las acciones que afectan a un cliente, se pueden registrar en su pestaa historial.

Para definirlas (y ver las que estn definidas)


Administracin -> Personalizacin -> Acciones -> Acciones servidor

Acciones de servidor
All nos encontramos con la siguiente informacin:

Nombre de accin: Nombre descriptivo de la accin.


Objeto: El objeto/modelo sobre el que disparar la accin de servidor. Ejemplo: Pedido de Venta.

Tipo de accin: en la siguiente diapositiva se listarn todas las acciones posibles dentro de

OpenERP. La instalacin de ciertos mdulos puede agregar acciones posibles a realizar.


Secuencia: Si tipo de accin es de tipo Multi Acciones, se ejecutan varias acciones a las cuales se les indica, mediante este campo, el orden para hacerlo. Condicin: Por defecto viene inicializado a true (entonces no tiene en cuenta la condicin), pero permite introducir una nica lnea de cdigo python que actua como condicin que se debe validar antes de ejecutar la accin. Configuracin segn el tipo de accin: cada tipo de accin seleccionado despliega su propia configuracin en funcin de sus caractersticas. Es aqu donde se define especficamente la accin en s.

Acciones de servidor
All nos encontramos con la siguiente informacin:

Nombre de accin: Nombre descriptivo de la accin.


Objeto: El objeto/modelo sobre el que disparar la accin de servidor. Ejemplo: Pedido de Venta.

Tipo de accin: en la siguiente diapositiva se listarn todas las acciones posibles dentro de

OpenERP. La instalacin de ciertos mdulos puede agregar acciones posibles a realizar.


Secuencia: Si tipo de accin es de tipo Multi Acciones, se ejecutan varias acciones a las cuales se les indica, mediante este campo, el orden para hacerlo. Condicin: Por defecto viene inicializado a true (entonces no tiene en cuenta la condicin), pero permite introducir una nica lnea de cdigo python que actua como condicin que se debe validar antes de ejecutar la accin. Configuracin segn el tipo de accin: cada tipo de accin seleccionado despliega su propia configuracin en funcin de sus caractersticas. Es aqu donde se define especficamente la accin en s.

Acciones de servidor
El primer paso es definir el tipo de accin, dentro de los siguientes tipos:

Accin cliente: se ejecuta del lado del cliente, y permite lanzar un wizard o un informe
Iteracin: Basada en una expresin bucle de python, permite repetir acciones de servidor. Se suelen usar en objetos con campos one2many en los que se quiere llevar a cabo una accin de servidor sobre los objetos referenciados en el one2many (pedidos de venta y lineas de venta

Cdigo Python: Para ejecutar cdigo python de varias lneas. El valor devuelto es el valor de la variable action = {}. Esto tiene sentido slo si se desea que una especfica ventana (formulario) emerja en un contexto especfico. En la mayora de las ocasiones no es necesario un valor de retorno. Nota: El cdigo es ejecutado utilizando la funcin exec de python, el cual se ejecuta en el espacio de nombres del diccionario con variables: object,time,cr,uid,ids

Trigger: Cualquier transicin del flujo de trabajo puede ser desencadenado con ste tipo de accin. Permite:

Flujo sobre: El objeto OpenERP sobre el que se desea disparar el flujo de trabajo. Flujo para ser ejecutado en este modelo.
Disparar sobre: Seleccionar el objeto/ID del modelo sobre el cual se ejecutar el flujo. Por ejemplo seleccionar el ID de factura si se desea disparar un cambio en la factura.

Acciones de servidor
El primer paso es definir el tipo de accin, dentro de los siguientes tipos:
Accin de email: Configurar una direccin de correo electrnico, asunto y mensaje.
Requiere configurar el servidor SMTP integrado en Open ERP. Opcionalmente se puede hacer uso de Power email, una arquitectura de email genrica para Open ERP que ofrece mayor funcionalidad y automatizacin de correos (no requiere acciones de servidor). Crear objeto: Se utiliza para crear un nuevo registro en cualquier modelo cuando se desencadena una accin de servidor. Permite hacer uso de la funcin historial mencionada anteriormente. Con Mapeo de Campos se da valor a los campos del registro. A continuacin se muestran capturas de pantallas con un ejemplo de creacin de eventos para un pedido de venta: Escribir objeto: Similar a Crear objeto a excepcin de que es utilizado para modificar un registro existente identificado por write_id. Si se actualiza un registro previamente creado con Crear Objeto, el mismo campo para create id puede utilizarse para write id. Multi accin: Para crear mltiples acciones de servidor y ejecutarlas de una en una

siguiendo un orden de secuencia. Es una de las opciones ms interesantes, aunque son


acciones de tipo servidor, slo una de tipo cliente puede ejecutarse.

Das könnte Ihnen auch gefallen