Mostrando las entradas con la etiqueta erp. Mostrar todas las entradas
Mostrando las entradas con la etiqueta erp. Mostrar todas las entradas

viernes, 22 de febrero de 2013

Creacion Módulo OpenERP TRESCloud



Creación de un


módulo en OpenERP




Indice

1. Composición de un modulo
   1.1 Elementos
   1.2 Estructura
         1.2.1 Estructura General
         1.2.2 Estructura principal del modulo
                 a.__init__.py
                 b.__openerp__.py
2. OpenERP Objects
   2.1 The ORM - Object-relational mapping - Models
   2.2 modulo.py
   2.3 Atributos para Objects
   2.4 Tipos de Campos ORM 
3. Construcción de la interfaz del modulo
   3.1 Común estructura XML
   3.2 Vistas
   3.3 Acciones
   3.4 Menús







1. Composición de un modulo 

1.1 Elementos:

• Los objetos de negocio: declaradas como clases de Python extendida de osv.osv (OpenObject class).
• Datos: XML / CSV archivos con meta-datos (vistas y la declaración de flujos de trabajo).
• wizards: formularios interactivos que se utilizan para ayudar a los usuarios.
• reports: RML (formato XML), MAKO o plantillas de OpenOffice informe, que se fusionó con cualquier tipo de datos empresariales, y generar HTML, ODT o informes en PDF.


1.2 Estructura:

1.2.1 Estructura General
Cada módulo está contenido en su propio directorio servidor /bin/ addons.


addons/
|- idea/
|- demo/
|- i18n/
|- report/
|- security/
|- view/
|- wizard/
|- workflow/
|- __init__.py
|- __openerp__.py
|- idea.py

1.2.2 Estructura principal del modulo

  • __init__.py
  • __openerp__.py
  • modulo.py
Explicaremos la funcionalidad de los puntos de la estructura principal.

a. __init__.py 
Es el descriptor de módulo de Python, porque un módulo de OpenERP es también un módulo regular de Python. 

Sirve para importar todos los archivos y directorios que contienen código python.




b.__openerp__.py
Contiene un único diccionario de Python con la declaración real del módulo: su nombre, las dependencias, la descripción y composición.
Maneja una estructura, que es la siguiente.




2. OpenERP Objects


Todo los ERP son piezas de datos que son accesibles a través de "objetos". Como un ejemplo, hay un objeto res.partner para acceder a los datos referentes a los partners(clientes), un objeto account.invoice para los datos referentes a las facturas, etc ..

Esto quiere decir que existe un objeto para todos los recursos y no por cada recurso. Si hablamos de términos de "orientación a objetos", podríamos decir que hay un objeto por nivel.

Para los desarrolladores:


OpenERP "objects" se llaman clases en la programación orientada a objetos.
A OpenERP "resources" se suele llamar un objeto en programación OO, instancia de una clase.

2.1 The ORM - Object-relational mapping - Models

El ORM, acrónimo de Object-Relational Mapping, es una parte central de OpenERP.


En OpenERP, el modelo de datos se describe y se manipula a través de las clases y objetos de Python. Es el trabajo ORM para cerrar la brecha - la forma más transparente posible para el desarrollador - entre Python y la base de datos relacional subyacente (PostgreSQL), que proporcionará la persistencia que necesitamos para nuestros objetos.

2.2. modulo.py


Este archivo contiene todas las clases Python con sus respectivas funciones, de acuerdo al siguiente:
Algo importante siempre dentro de un archivo .py es importar los osv.
from osv import osv
from osv import fields

También al declarar la clase debe ir como atributos (osv.osv) En el punto 2. Maneja la siguiente estructura.

class idea(osv.osv)
          _name='idea.idea'
          _columns={
               (se declaran las variables)
          }
          _default={
            ( No es necesario, se utiliza para crear variables con un valor por defecto)
          }
idea()




2.3. Atributos para Objects




2.4. Tipos de Campos ORM

Estos algunos de los tipos de campos de ORM



3. Construcción de la interfaz del modulo.

En la interfaz se manejan con una estructura xml, este se encarga de insertar los registros de datos que declaran los componentes de la interfaz del módulo. Cada módulo es un elemento de registro de datos regular: menús, vistas, acciones, roles, derechos de acceso, etc.
Estos Archivos XML son declarados en update_xml dentro del archivo __openerp__.py



3.1 Común estructura XML

Un XML contiene declaraciones de “record” en la siguiente forma:


3.2 Vistas

3.3 Acciones


3.4 Menús





sábado, 16 de febrero de 2013

Backups PostgreSQL OPENERP


Backups PostgreSQL OPENERP Incremental y diferencial


Antecedente


En vista de proteger la base de OpenERP frente a cualquier daño, se ve la necesidad de  mantener backups.

Objetivo


Obtener backups completos semanales y diarios diferenciales de la base de datos postgresql de OpenERP.

Resumen General


El backup semanal está calendarizado para ejecutarse todos los domingos a las 01:00 a.m., y los diferenciales de igual manera serán ejecutados a la 01:00 a.m., los días lunes, martes, miércoles, jueves, viernes y sábado.
Para poder hacer la restauración de un diferencial debemos tener a la mano siempre en backup completo del domingo anterior a ese diferencial.

 

Configuración de Backups Servidor (BDD)


Se generaron dos script, uno para los backups completos y otro para los backups diferenciales. Los mismos que se notan en la calendarización del Sistema Operativo del usuario openerp, que se muestra a continuación:



Nomenclatura de archivos


Se utiliza la siguiente nomenclatura para identificar a los archivos:

empresaerp_tipo_yyyy-mm-dd

Detalle:

Tipo
Ejemplo
Completo
empresaerp_full_2013-01-27
Diferencial
empresaerp_diff_2013-01-28
Completo Temporal (luego es borrado)
empresaerp_tempfull_2013-01-28

Nótese en los ejemplos, el backup completo fue el domingo 27 de enero del 2013, y al siguiente día lunes 28 se tiene el primer diferencial.

Script Backup Completo (Full)


Como se puede notar la ruta del script es /backups/scripts/backupfull.sh, el mismo que corre  los días domingo a la 01:00 a.m., a continuación el contenido del script.
#!/bin/bash
#
# Script by TRESCLOUD CIA. LTDA.
# www.trescloud.com
# +593 2 2269492
# Quito - Ecuador

echo Se mueve el anterior full del directorio last al directorio full
mv /backups/last/* /backups/full/

echo String para colocar la fecha al nombre de los backups
backup_date=`date +%Y-%m-%d`

echo Obtengo el nuevo full en el directorio last
pg_dump empresaerp -f /backups/last/empresaerp_full\_$backup_date

echo BORRADO DE BACKUPS

echo Cambiamos de directorio (Bases de datos)
cd /backups/full/

echo Dejar solo 2, en este caso 14 días de antiguedad, porque son semanales
numdiaslocbdd=14

for arch in $(find . -mtime +${numdiaslocbdd})
do
   echo Eliminando $arch
   rm -rf $arch
done

En resumen el script realiza los siguientes pasos:

1.       Mueve el último backup completo del directorio /backups/last hacia el directorio /backups/full.

2.       Saca en ese momento el respaldo completo de la base de datos y lo deja en la ruta /bakup/last/, para convertirse  en el punto de referencia de los respaldos diferenciales de la semana.

3.       Borra los backups completos de la carpeta /backups/full que tengan más de 2 semanas de antigüedad.

Dicho respaldo permanece en /backups/last hasta la siguiente ejecución calendarizada del script que tiene periodicidad semanal los domingos a las 1 a.m.
Todo el backup demora alrededor de 15 minutos, eso lo podemos notar en la fecha de modificación de la carpeta que tiene la fecha actual, en el paso 2.

Script Backup Diferencial (Diff)


Este script se encuentra en la ruta /backups/scripts/backupdiff.sh, el mismo que se ejecuta todos los días excepto el domingo, a la 01:00 a.m, a continuación el contenido del script

#!/bin/bash
#
# Script by TRESCLOUD CIA. LTDA.
# www.trescloud.com
# +593 2 2269492
# Quito - Ecuador

echo String para colocar la fecha al nombre de los backups
backup_date=`date +%Y-%m-%d`

echo Obtengo el nuevo full temporal en el directorio diff
cd /backups/diff/
pg_dump empresaerp -f /backups/diff/empresaerp_tempfull\_$backup_date

echo Guardo en una variable el nombre del full temporal
tempfull=empresaerp_tempfull\_$backup_date

echo Guardo en una variable el nombre de ultimo full
cd /backups/last/
lastfull=$(pwd)/

echo Saco un diferencial de ultimo full vs el full temporal actual
diff /backups/diff/$tempfull $lastfull > /backups/diff/empresaerp_diff\_$backup_date

echo Borro el full temporal
cd /backups/diff/
rm -rf empresaerp_tempfull\_$backup_date

echo BORRADO DE BACKUPS

echo Cambiamos de directorio para borar bases diferenciales históricas
cd /backups/diff/

echo Dejar solo 14, en este caso 14 días de antiguedad, porque son diarios
numdiaslocbdd=14

for arch in $(find . -mtime +${numdiaslocbdd})
do
   echo Eliminando $arch
   rm -rf $arch
done

En resumen el script realiza los siguientes pasos:

1.       Saca un respaldo completo temporal de la base de datos que se ubicará en la carpeta /backups/diff/.

2.       Genera un archivo diferencial, comparando el respaldo que se encuentra en /backups/last/ y el archivo que generó en el punto anterior, y este nuevo archivo diferencial lo guarda dentro de la ruta /backups/diff.

3.       Borra el respaldo completo temporal que hizo.

4.       Al final se verifica la antigüedad de los archivos, y se elimina automáticamente los que tengan más de 14 días de antigüedad.
Todo el proceso demora a la actualidad alrededor de 20 minutos, eso lo podemos notar en la fecha de modificación de los archivos dentro de la carpeta /backup/diff/.

Como restaurar un backup


Restauración de una base de datos Completa (Domingos)


Para realizar la restauración de la base de datos debemos ejecutar los siguientes pasos desde el usuario postgres.

1.       Ingresar el comando psql.

2.       Se debe eliminar las conexiones activas que se tengan con la base de datos que queremos remplazar, con el siguiente comando:

SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'empresaerp';


3.       Debemos borrar la base de datos, con el siguiente comando:

DROP DATABASE empresaerp;

4.       Recreamos la base de datos (vacía), con el siguiente comando:

CREATE DATABASE empresaerp WITH OWNER openerp TEMPLATE template0;

5.       Salir de psql ejecutando CTRL+D.

6.       Luego debemos restaurar el full del día correspondiente con el siguiente comando:

psql empresaerp < /backups/last/empresaerp_full_2013-01-27


Restauración de una base de datos diferencial (Lunes-Sábado)


Para restaurar un diferencial, necesitamos obtener primero el respaldo completo de ese día, en el ejemplo anterior se explicó como restaurar un respaldo completo del día domingo 27, digamos que necesitamos restaurar  el respaldo diferencial del día lunes 28.

Debemos realizar los mismos pasos explicados anteriormente excepto el último, que es el que ya realiza la restauración como tal.

Se debe generar el respaldo completo, tomando el último full que se encuentra en /backups/last, y el diferencial que necesitemos que se encuentra en /backups/diff, y debemos ejecutar el siguiente comando:

patch -b /backups/last/empresaerp_full_2013-01-27 /backups/diff/empresaerp_diff_2013-01-28

Este comando nos ayudará a unir el contenido de ambos correctamente de manera que se tenga un respaldo consistente, sin corrupción alguna.

Luego de ejecutar este comando, se renombrará el archivo que dice "empresaerp_full_2013-01-27" por   "empresaerp_full_2013-01-27.orig" que sigue siendo el mismo, y el nuevo archivo que es la unión del completo mas el diferencial tendrá el nombre  "empresaerp_full_2013-01-27", que será el que debemos restaurar con el paso 6 de los puntos explicados anteriormente.

NOTA: El comando deberá ser ejecutado dentro del directorio /backups/last/

para mas información contactanos www.trescloud.com

viernes, 8 de febrero de 2013

Manual de Pedido de venta a Factura en OpenERP v6


FACTURACIÓN EN OpenERP
 1. Abrir la URL relacionada al sistema de su compañía.
 2. Debe escoger la base de datos relacionada, conocer sus credenciales (nombre de usuario y contraseña).
 3. Debe dar clic en "Iniciar Sesión". 

Crear un pedido de venta:
Una vez que ingresamos al sistema, ubicarse en la barra de menús y dar clic en la opción VENTAS/Pedidos de ventas:
Se despliega la siguiente pantalla:
Dar clic en el botón Nuevo y se despliega la siguiente pantalla: 
 

Los campos que tienen fondo celeste son obligatorios en todo el sistema. Dichas secciones permiten auto completar campos, las lupas al final de cada casillero indican que se puede seleccionar desde un conjunto de variables, o bien sea generar una nueva entrada y por último unos campos donde se debe seleccionar las opciones ahí ya establecidas. 

Para ir pasando de campo en campo, vamos a teclear "TAB", de esta manera, vamos navegando con el teclado en cada campo. 

1. Nos ubicamos en el campo del cliente y damos clic en la lupa.
Se despliega la siguiente pantalla:
Una vez escogido el cliente procedemos a completar los campos referentes a:
2. Paciente, 3. Médico Referente. y 4. Tarifa
 
Procedemos a agregar productos al pedido de venta dando clic en el botón Nuevo.
Se despliega una pantalla donde se debe escoger los productos que necesita el cliente.

·  Producto: Escoger la referencia del producto y pulsar la tecla TAB o dar clic en la lupa para escoger un producto:
 Seleccionar el producto adecuado y se carga a la línea de pedido de venta. 

·  Cantidad: Debemos indicar la cantidad/unidades del producto.
Dar clic en el botón Guardar y Nuevo si se desea seguir agregando productos al pedido de venta, Guardar y Cerrar si ya no desea más productos o en Cancelar si el cliente ya no desea hacer el pedido.
Una vez elegidos los productos se despliega la siguiente pantalla:
Dar clic en el botón Guardar.
Hasta el momento tenemos un pedido de venta en estado presupuesto, para convertirlo definitivamente en un pedido de venta debemos dar clic en el botón Confirmar Pedido o en su defecto en el botón Cancelar pedido.
 
Crear una factura:

Este documento está compuesto por tres partes:
            El encabezado de la factura, con información del cliente,
            El cuerpo principal de la factura, con líneas de facturas detalladas,
            El pie de la página, con detalle de los impuestos y los totales.

Estados en los que puede presentarse una factura:

Borrador: Estado en el que una factura no genera movimientos contables. También llamada Pro-forma.
Una factura en borrador, puede pasar de Borrador a Eliminada, y de Borrador a Abierta.

Abierta: Una factura pasa a este estado una vez que se valida la factura borrador.
Una factura al pasar al estado abierta si genera movimientos contables.
Una factura Abierta, es una factura borrador validada.

Pagada: Una factura pasa a este estado una vez que fue pagada en su totalidad por el cliente.

Para poder eliminar una factura validada antes que nada se debe cancelar la factura y llevarla a estado borrador (solo en este estado se pueden borrar).

Para ello damos clic en la barra de menús y seleccionamos VENTAS/Pedidos de ventas:
Se presenta la siguiente pantalla:
En el caso de este ejemplo ya tenemos algunos pedidos de venta en estados (presupuesto o en proceso), la diferencia radica en que en un presupuesto el pedido de venta aun no fue confirmado en cambio en un pedido de venta en proceso si fue confirmado.

Damos clic en cualquier pedido de venta, en este caso en estado presupuesto y se despliega la siguiente pantalla:

Pulsar el botón Confirmar pedido, y los valores totales se auto calculan. Es importante recalcar el cambio del estado del presupuesto que ahora es pedido de venta. Aparecen ahora dos botones adicionales, Avanzar Factura y Crear factura final.
Damos clic en el botón Crear factura final y nos aparece la siguiente pantalla:
Campos a llenar:
· Número de factura: Se le asignará un número dependiendo de nuestra secuencia de numeración según autorización del SRI. 
  Al asignarle uno incorrecto el sistema despliega la siguiente pantalla:
· Agencia: Escoger la agencia en la que se encuentra ubicado.
· Punto de emisión: Corresponde al número de ventanilla de esa agencia en la que se está generando la factura.
· Cliente:
· Dirección de factura: Nos propone la dirección correspondiente al cliente. Podemos cambiar de dirección en el caso necesario. Este campo proviene del cliente.
· Posición fiscal: Tenemos varias opciones, escoger la adecuada.
· Fecha factura: Dejarlo vacío para utilizar la fecha actual.
· Autorización: Campo asignado por el SRI y que el sistema lo llena automáticamente.
· Forzar periodo: Dejarlo vacío para utilizar el periodo de la fecha de validación de la factura.
· Cuenta: La cuenta contable del cliente. Este campo proviene del cliente.
· Plazo de pago: Por defecto 30 días fin de mes.

Una vez que los campos esenciales están llenos, pulsar el botón Calcular Impuestos
· Calcular Impuestos: En el caso que modifiquemos una factura ya creada, debemos hacer que nos re calcule los impuestos.
Dar clic en el botón Guardar. Hasta el momento tenemos la factura en estado Borrador.

Dar clic en el botón Validar para que la factura pase al estado Abierto.
Con esto la factura queda lista para proceder al proceso de pago por parte del cliente.

Mas información www.trescloud.com