Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

Publicidad

sábado, 23 de diciembre de 2017

Portal Auto Facturación en Linea con Odoo

Portal de Auto Facturación Integrado con Odoo


Hola a todos, gracias por visitar este blog, en esta ocasión le vengo a hablar sobre un desarrollo muy necesario para muchas Empresas dedicadas a la venta de productos y es la necesidad de que el cliente pueda generar sus propias facturas electrónicas a través de nuestro Sistema de facturación y que mejor que este integrado con nuestro ERP Odoo.




Cualquier información: info@argil.mx


jueves, 30 de noviembre de 2017

Localización Mexicana para Odoo 10

Adaptaciones Contables para México


Hola a todos, este pequeño Post es para anunciar la Localización Mexicana para la version 10 de Odoo, una cosa importante que quiero resaltar es que esta localizacion es compatible con la version Comunitaria y la Version Enterprise de Odoo, algunas de sus funcionalidades mas importantes son:
  • Contabilidad Electrónica
    • Catalogo de Cuentas XML
    • Balanza de Comprobación
    • Complementos XML
    • Plan de Cuentas
    • Auxiliares Contables
    • Polizas
  • Facturación Electrónica
  • DIOT
  • Catalogo de Cuentas Jerárquico
  • Reportes IFRS
  • Reclasificacion de Impuestos
  • Periodos Fiscales y Años Fiscales
  • Mucho mas ....


Cualquier información: info@argil.mx


martes, 8 de agosto de 2017

Ejecutar Script SQL Terminal Postgres

Ejecución de Scripts Terminal Linux (PostgreSQL)



Una parte importante en la administración de Odoo es poder correr modificaciones mediante Base de Datos, para optimizar la actualización de Registros en Diferentes Tablas, el proceso es muy sencillo primero Debemos entrar en modo Terminal PostgreSQL para ello existen varios metodos, el mas sencillo es  ejecutar:


sudo su postgres

El paso primordial es indicarle a Postgres la Base de Datos y la ruta del Script en formato SQL:

psql BaseDeDatos < /ruta/archivo.sql  


Nota: Es importante que cada sentencia en el Script finalice con el símbolo ; ya que esto indica el fin de cada expresión.


martes, 4 de julio de 2017

Consulta de Fecha Actual a traves de la API de Odoo

Consulta de la Fecha Actual utilizando Odoo


    La API de Odoo incorpora en la clase fields la posibilidad de manipular los valores de los campos de tipo fecha/fecha hora, lo cual podemos utilizar para poder consultar la fecha actual en la zona horaria que deseemos:

Fields - Date

  • context_today Retorna la Fecha en Zona horaria del Usuario.
  • today Retorna la fecha del Sistema Operativo en un String
  • from_string Retorna una fecha desde un string a una instancia datetime.date() 
  • to_string rCaso contrario, devuelve una fecha en formato de texto desde una instancia de Fecha datetime.date()
Ejemplos Gráficos
>>> from openerp import fields

>>> adate = fields.Date()
>>> fields.Date.today()
'2014-06-15'
>>> fields.Date.context_today(self)
'2014-06-15'
>>> fields.Date.context_today(self, timestamp=datetime.datetime.now())
'2014-06-15'
>>> fields.Date.from_string(fields.Date.today())
datetime.datetime(2014, 6, 15, 19, 32, 17)
>>> fields.Date.to_string(datetime.datetime.today())
'2014-06-15'

Fields - Datetime

Los valores disponibles para fecha Hora son los siguientes:
  • context_timestamp Retorna la fecha y hora en formato de Zona Horaria del Usuario.
  • now Retorna la fecha y hora del Sistema Operativo
  • from_string Retorna la fecha y hora en formato de texto desde una instancia datetime.date
  • to_string Retorna una instancia de fecha en formato datetime.date desde una fecha de Texto.
Ejemplos Gráficos:
>>> fields.Datetime.context_timestamp(self, timestamp=datetime.datetime.now())
datetime.datetime(2014, 6, 15, 21, 26, 1, 248354, tzinfo=<DstTzInfo 'Europe/Brussels' CEST+2:00:00 DST>)
>>> fields.Datetime.now()
'2014-06-15 19:26:13'
>>> fields.Datetime.from_string(fields.Datetime.now())
datetime.datetime(2014, 6, 15, 19, 32, 17)
>>> fields.Datetime.to_string(datetime.datetime.now())
'2014-06-15 19:26:13'

lunes, 3 de julio de 2017

Mensaje de Confirmación en la ejecución de Botones

Mensaje de Confirmación en funciones ejecutadas desde una Vista



    En la definición de Botones de Tipo Objeto podemos añadir un nuevo atributo el cual nos pedirá una segunda confirmación para desencadenar el proceso que hayamos programado, el atributo es muy sencillo y tiene por nombre confirm mas el mensaje que deseamos enviar al Usuario, el fragmento es el siguiente:


<button name="mi_metodo_odoo" type="object" string="Ejecutar 
Proceso" confirm="Estas Seguro que deseas pulsar este Boton?" />

El Resultado durante la ejecución es la siguiente:


Como podemos observar existe una doble validación del botón para poder evitar algún click por accidente, este tipo de advertencias podrán utilizarse en procesos clave de nuestros desarrollos.




viernes, 23 de junio de 2017

Descarga de Reporte con Nombres Dinámicos en Odoo 9 y Odoo 10

Generación de Reportes con Nombres Dinámicos en Odoo



Dentro de las grandes virtudes de Odoo podemos ver una actualización muy util al apartado de Reportes, la cual es la generación del nombre del archivo descargado (Ej. Pedido 01.pdf) de forma dinámica tomando información de un campo del formulario donde se imprime el Reporte.

El primero paso es activar el modo desarrollador.

Con este paso, podremos visualizar en Configuración --> Informes --> Formulario --> Campo Printed Report Name

Este campo nos permitirá ingresar una serie de evaluaciones del registro del cual se imprime la información para generar el nombre de descarga del Archivo PDF, por ejemplo en el reporte de Facturas podria generar el siguiente nombre:


El resultado sera de 2 maneras, si no existe numero de factura:


Existiendo un numero de folio (factura confirmada):


El Nombre del reporte con concatenaciones puede ser dinámico o fijo, reemplazando el valor original del reporte.


Espero les ayude tanto como a mi.


martes, 30 de mayo de 2017

Contabilidad electrónica 1.3 para OpenERP 7, Odoo 8, Odoo 9 y Odoo10

Contabilidad electrónica 1.3 para todas las versiones de Odoo.





Muchos de nosotros hemos escuchado acerca de los nuevos cambios en la Contabilidad Electrónica proceso fiscal electrónico en México desde el 2014, en Argil Consulting estamos listos para cumplir con esta norma, los detalles los describimos a continuación.

Están obligadas al envío de la contabilidad electrónica:
  • Las personas morales, incluidas las personas morales con fines no lucrativos.
  • Las personas físicas con actividad empresarial, actividades profesionales con ingresos superiores a $ 2,000.000.00 y arrendamiento, con la condicionante de que no estén haciendo uso de la aplicación Mis cuentas.
A continuación, encontrarás el detalle de los cambios que hemos encontrados después de realizar un análisis detallado a los documentos liberados:
Auxiliares y Pólizas
  • La versión ha sido cambiada a 1.3
  • Se ha cambiado la expresión regular del número de orden (NumOrden)
  • El número de tramite (NumTramite) ha cambiado su tamaño, el cual estaba en 10 y ha pasado a 14, y también se modificado su expresión regular permitiendo letras en el valor del mismo.
  • Ahora los importes permiten números más grandes.
Balanza de comprobación
  • Ahora la versión es 1.3
  • A la fecha de la última modificación (FechaModBal) se la definido como valor mínimo 01/01/2015.
  • Ahora los importes permiten números más grandes.
Catálogo de cuentas
  • El único cambio que existe en este, es la versión que ha sido actualizada a la 1.3
Otros Cambios
Adicional a lo ya comentado, el SAT ha realizado otros cambios, que, aunque son menores, consideramos que es importante mencionarlos:

  • Se actualizo el archivo de digestión de SHA-1 a SHA-2.
  • Cambio la ruta dentro del servidor del SAT donde se encuentran los respectivos schemas.
Si eres un cliente nuestro no dudes en que pronto estarás recibiendo esta actualización y si no lo eres aún, no lo dudes mas, no pongas en riesgo la integridad de tu negocio ¡Acércate ya!

Fuentes Consultadas:

http://www.facturando.mx
https://contadormx.com
http://www.sat.gob.mx/fichas_tematicas/buzon_tributario/Paginas/contabilidad_electronica.aspx




jueves, 20 de abril de 2017

Localización Mexicana para Odoo 8, Odoo 9 y Odoo 10

Adaptaciones Contables para México en cualquier Versión de Odoo


Hola a todos, este pequeño Post es para anunciar la Localización Mexicana para cualquier versión de Odoo (Odoo 8, Odoo 9 y Odoo 10), la cual incluye entre lo mas destacado:
  • Contabilidad Electrónica
    • Catalogo de Cuentas XML
    • Balanza de Comprobación
    • Complementos XML
    • Plan de Cuentas
    • Auxiliares Contables
    • Polizas
  • Facturación Electrónica
  • DIOT
  • Catalogo de Cuentas Jerárquico
  • Reportes IFRS
  • Reclasificacion de Impuestos
  • Periodos Fiscales y Años Fiscales
  • Mucho mas ....


Cualquier información: info@argil.mx


lunes, 27 de marzo de 2017

Modulo de Captura de Datos para pagos con Tarjeta en TPV

Captura de los últimos 4 Dígitos para Pagos en el Punto de Venta



Un dato importante para el uso de puntos de venta en México es la obtención y resguardo de los últimos 4 dígitos de pagos con tarjeta de crédito/débito esto nos ayuda en auditorias y obtención de reportes como cierres de caja, etc.

Al no encontrar ningún modulo relacionado en la tienda de Odoo me di a la tarea de crear este modulo y compartirlo con la comunidad en estos tiempos donde ya no encontramos módulos útiles que sean gratuitos.

El modulo añade un input en la captura del pago donde podemos capturar la información de cada pago con tarjeta:


El input captura solamente 4 dígitos como máximo, para validar la seguridad de la información del Cliente.


La información enviada mediante es campo es guardada en el registro de Pedido del POS:


El campo donde observaremos la información tiene por nombre últimos 4 Digitos:



La liga del modulo es la siguiente, por el momento solo funciona en Odoo 9 y 10:

viernes, 10 de marzo de 2017

Herencia de propiedades en Vistas Formulario

Recepción de Propiedades mediante el contexto Odoo de las Vistas Formulario


Una propiedad muy interesante en la programación Odoo es poder heredar propiedades, valores, etc.
Esto es posible gracias a un parametro heredable en todos los aspectos de Odoo (Funciones, Vistas, Acciones de Ventana. etc..) llamado context.

Existe una infinidad de usos que podemos darle al contexto de odoo, desde enviar una cantidad infinita de variables en este parámetro dentro de una función, hasta la posibilidad de heredar valores desde la vista formulario en campos relación.

Dentro de nuestro formulario podemos enviar valores al contexto como lo mencione anteriormente, por ejemplo en la relación de lineas de pedido (order_line_ids) enviare el Almacén del Pedido, esto lo haria en la vista de esta manera:

<field name="order_line_ids" context ="{'warehouse_id': warehouse_id} />

En este ejemplo el campo warehouse_id es necesario que exista en la vista de donde lo enviamos, acto seguido si definimos cualquier método dentro del registro de ventas, podemos observar dentro del contexto el campo warehouse_id con el Almacén del Pedido de Venta.



lunes, 13 de febrero de 2017

Inserción de Datos a una nueva tabla desde una consulta SQL

Insertar Datos a una tabla Many2many desde una consulta SQL


Un problema que tuve al momento de generar una base de datos nueva y cargar un catalogo de productos fue que olvide activar una ruta creada, entonces me surgió una duda como puedo insertar datos a una tabla relacional producto de un campo many2many desde una consulta SQL sin usar funciones en la base de datos, pues la respuesta fue muy sencilla y a continuación les describo mi script:

insert into stock_route_product(product_id,route_id) select id as product_id,
5 as route_id from product_template;


  • Primero detectamos la tabla many2many2 que contiene la información por la cual se crean las relaciones.
  • Segundo ingresamos las 2 columnas que se necesitan para obtener la relación muchos a muchos, en mi caso la ruta que quería insertar era la que tenia el ID 5 para cada producto.
  • Por ultimo hice la consulta de la tabla product_template y de forma automática PostreSQL inserto cada registro de la tabla mencionada y su relación correspondiente en la tabla de rutas.


Espero les sea de ayuda.


viernes, 27 de enero de 2017

Automatización de Respaldos de Bases de Datos Odoo desde Bash

Automatización de Respaldos en Odoo desde Bash



  1. Crear un Script (Backup-Script) en la Ruta /var/scripts/dump_db.sh
    #!/bin/sh    
    hostname='hostname'
    
    ##########################################
    ## Odoo Backup
    ## Respaldo de las Bases: odoodb1, odoob2
    ##########################################
    
    # Detener el Servicio de Odoo
    /etc/init.d/odoo-server stop
    
    # Dump DB (Backup de 2 Bases de Datos)
    for db in odoodb1 odoodb2
    do
      date='date +"%Y%m%d_%H%M%N"' # Respaldo con la fecha actual.
      filename="/var/pgdump/${hostname}_${db}_${date}.sql"
      pg_dump -E UTF-8 -p 5433 -F p -b -f $filename $db
      gzip $filename # Comprimiendo la Base de Datos
    done
    
    # Iniciando el servicio de Odoo nuevamente
    /etc/init.d/odoo-server start
    
    exit 0
    
  2. Script de Eliminación de los Backups, creamos un script en la ruta /var/scripts/housekeeping.sh (Solo borrara backups con una antiguedad de 30 dias para atras).
    #!/bin/sh
    path=/var/pgdump
    logfile=/var/log/$0
    
    rm -f $logfile
    for file in 'find /var/pgdump/ -mtime +30 -type f -name *.sql.gz'
    do
      echo "Borrando: " $file >> $logfile
      rm $file
    done
    
    exit 0 
  3. Programar la ejecucion de los scripts, modificamos el crontab en  /etc/crontab. La programación de los Backups se ejecutara a la 1 am y la limpieza de backups a las 5 am.
    # m h dom mon dow user  command
    0 1 * * * postgres /var/scripts/dump_db.sh
    0 5 * * * postgres /var/scripts/housekeeping.sh

Si queremos que nuestro Respaldo pese mucho menos podríamos comprimirlo con la librería 7zip en lugar de gzip:



7zr a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on Mi_Backup.7z /path/to/database.dump


Nota: La detención del proceso de Odoo, puede variar dependiendo la instalación que hayan realizado, podría ser simplemente service odoo stop/start o podemos matar el proceso directamente con sudo fuser -k 8069/tcp.

miércoles, 25 de enero de 2017

Obtener ID de registro desde datos XML Odoo

Método para obtener el ID de la tabla desde el ID de una Vista de un modulo Odoo



Se que el titulo sonada un poco extraño, pero la idea es muy sencilla, existe un metodo de Odoo que te permite obtener el ID de un registro ya creado en la base de datos, enviandole el ID con el cual lo creamos desde un XML, para que sea un poco mas claro vamos a analizarlo.

  • Normalmente creamos un registro desde un XML de la siguiente manera:
<record id="product_uom_categ_kgm" model="product.uom.categ">
            <field name="name">Weight</field>
</record>
     


El ejemplo anterior es una categoría creada desde el modulo product.

  • Si necesitáramos saber el ID que tiene esa categoría en la base de datos:

          La manera natural o normal que yo realizaría es:
          categ_id = self.env['product.category'].search([('name','=','Weight'])
         Utilizando el método de odoo seria de la siguiente manera:
          uom_categ_id = self.env['ir.model.data'].xmlid_to_res_id( 'product.product_uom_categ_kgm')

Los parámetros que recibe son:

  • Nombre del Modulo.
  • ID del registro en el XML.


En resumen el metodo xml_to_res_id, te permite conocer el ID de cualquier registro en cualquier tabla siempre y cuando se haya creado desde un XML en un modulo de Odoo.


jueves, 12 de enero de 2017

Reset Password Odoo desde Base de Datos

Actualizar contraseña de usuarios Odoo desde la Base de Datos


Anteriormente en versiones 7 de Odoo (OpenERP) podiamos consultar la contraseña de un usuario mediante la columna password  de la tabla res_users, a partir de la versión 8 añaden una seguridad extra que es el HASH (Encriptación) de las mismas, como administradores de Odoo muchas veces tenemos que consultar o resetear las contraseñas de algunos usuarios para ello basta con ejecutar el siguiente script sql desde la base de datos:

UPDATE res_users SET password='', password_crypt='HASH' WHERE id=1;

Dentro de la variable password pondriamos la nueva contraseña que puede ser la que el usuario prefiera.