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

miƩrcoles, 19 de febrero de 2020

Debug en Plantillas Qweb

Debug Qweb en Odoo


Como en el desarrollo de modulos y aplicaciones en Odoo podemos también debuggear nuestras plantillas una practica que nos puede llegar a ser muy util para conocer el momento exacto donde se genera o ejecuta una sentencia, funcion o se manada a ejecutar metodos dentro de nuestro reporte, esto nos facilita la resolución de muchos errores.

Lo unico que necesitamos agregar dentro de nuestro reporte es:



<t t-debug="pdb"/>


Con  ello podremos utilizar dentro de nuestro Debug Python con el metodo set_trace(), habilitamos dentro de nuestro registro de eventos el parametro --log-level=debug y por ultimo solo queda depurar nuestra plantilla XML con pdb.

Odoo Qweb manejo de Ciclos

Loops o Ciclos con




QWeb en Odoo es muy util al momento de realizar o ejecutar funcionalidades como Reportes, Archivos XML etc. todo esto basado en plantillas, pero existen muchas funcionalidades muy utiles que nos pueden ayudar a mejorar el diseƱo de nuestros Reportes, de las cuales les vengo a hablar en este post y son:


  • as_first
  • as_last
  • as_index

t t-foreach="['A','B','C','D','E']" t-as="item">
    <p t-if="item_first">
        Inicio
    </p>
    <p>
        Indice <t t-esc="item_index"/> y resultado <t t-esc="item"/>
    </p>
    <p t-if="item_last">
        Fin
    </p>
</t>

El resultado seria:

Inicio
Indice 0 y resultado A
Indice 1 y resultado B
Indice 2 y resultado C
Indice 3 y resultado D
Indice 4 y resultado E
Fin

Podemos deducir que las palabras clave as_first indica el inicio del loop, as_index el recorrido de nuestro ciclo y as_end si es el ultimo valor de nuestra lista.


martes, 18 de febrero de 2020

Acción Automatizada para Prevenir Registros Duplicados

Acción Automaticas Revisión de Registros



     En el Sistema Odoo existe un menu que muy pocos utilizamos debido a que no sabemos realmente como funciona y sobre todo como explotar todo el potencial que tiene para evitar desarrollar restricciones que serian mucho mas faciles registrar dentro de esta Funcionalidad del Sistema.

El menu tiene por nombre Acciones Automaticas o Automatizadas dentro del menu de Configuración de Odoo.


Primero Crearemos un registro nuevo con el nombre que nos permita identificarlo de manera mas facil.

Lo primero seria:
  • Nombre de la Regla o Acción
  • Modelo al cual Aplicar.
  • Ejecución en este caso al Crear y Actualizar.




Lo segundo es generar el Codigo Python que nos va permitir aplicar la regla o restricción, para ello pulsamos dentro de la Pestaña Opciones y agregamos una Acción en Python.


El Código seria:


if record.default_code:
   existing_product = env['product.template'].search(
[('id','!=',record.id),
('default_code','=',record.default_code)
])
   if existing_product:
     raise Warning("La Referencia Interna ya existe en 
                    otro Producto en el Sistema.!")


Espero que les sea de utilidad.

Actualizar Modulo en Multiples Bases de Datos - Odoo

Actualización de Modulos en multiples Bases de Datos




El dia de hoy traigo un Query que nos permite actualizar un modulo  en multiples Bases de Datos de Odoo corriendo en una misma instancia y versión de Odoo.

Script escrito en Bash con codigo Python:


#!/usr/bin/env python

from datetime import date
import subprocess, xmlrpclib, sys, os, psycopg2, pexpect

# Database info
db_user = 'odoo'
db_passwd = ''
db_host = 'localhost'
db_port = 5432
db_name = 'postgres'
oerp_conf = '/opt/odoo/odoo.conf'
oerp_bin = "/opt/odoo/odoo-bin"
module_to_upgrade = "modulo_a_actualizar"

today = date.today()
log_date = today.strftime('%Y%m%d')
log_name = "update-{}.log".format(log_date)
base_dir = os.getcwd()

with open(log_name, 'a+') as log_file:

  # Get list of databases
  db = psycopg2.connect(user=       db_user, 
                        password=   db_passwd,
                        host=       db_host,
                        port=       db_port,
                        database=   db_name)
  cr = db.cursor()
  cr.execute("select datname from pg_database where datdba=(select usesysid from pg_user where usename='{}') order by datname".format(db_user))
  dblist = [str(name) for (name,) in cr.fetchall()]

  for database in dblist:
    # Wait for server to upgrade database, then kill it
    print "Actualizando Base de Datos {}...".format(database)
    
    dbupdate_cmd = "{} shell -c {} --database={} --update={}".format(oerp_bin, oerp_conf, database, module_to_upgrade) 
    output = pexpect.spawn(dbupdate_cmd)
    try:
      # to catch this string loading.py was altered (line 461)
      output.expect('.*Modulos Cargados.', timeout=600)

    except pexpect.ExceptionPexpect as e:
      print "Se Agoto el tiempo de espera en la actualización {}. Intente actualizar Manualmente la Base de Datos con el comando '{}'.".format(database, dbupdate_cmd)
    output.kill(0)
    status = "Base de Datos Actualizada {}.".format(database)
    print status
    log_file.write(status + "\n")

Los Parametros principales a modificar son:

  • oerp_conf
    • Es la ruta del archivo de configuración de Odoo, normalmente se encuentra dentro de /etc/odoo/odoo-server.conf
  • oerp_bin
    • Ruta del programa de administración de Odoo, se encuentra dentro de la ruta de instalación del ERP.



Fuente: http://soft29.info/blog/entry/odoo-module-upgrade-on-multiple

lunes, 3 de febrero de 2020

Uso de CFDI en Punto de Venta - Facturación Electronica


POS - Uso de CFDI 

Odoo 13.0



El siguiente modulo nos permite seleccionar el Uso de CFDI con el cual generaremosl a Factura Electronica para nuestros clientes, dentro de las principales caracteristicas  del modulo que voy a presentarles podremos encontrar:


  • Selección de Uso de CFDI desde el Formulario de Clientes

  • Selección del USo de CFDI desde el Formulario de Clientes en el Punto de Venta.


  • Visualización al seleccionar clientes en el Punto de Venta

  • Como ultima funcionalidad automaticamente relaciona el Uso de CFDI del cliente al seleccionarlo dentro de Formulario de Facturación.

El modulo lo podran descargar desde:


Con el nombre pos_customer_uso_cfdi







miƩrcoles, 29 de enero de 2020

Funcion copy_from para Importar Tablas desde Archivos Excel (CSV)

Importar Archivos CSV desde Funciones Python en Odoo



Lo primero es conocer la función llamada copy_from la cual forma parte del cursor que podemos instanciar por medio de la linea:

self.env.cr.copy_from


Parametros Necesarios para la Función

  1. CSV: Archivo de Excel en formato csv con la información de la tabla.
  2. Tabla: Nombre de la tabla a la cual sera volcada la información del archivo.
  3. Separador: Simbolo separador de la inforamción del CSV ( , por ejemplo)
  4. Columnas: Columnas separadas por el simbolo del Archivo.


Ejecución del Metodo

Lo primero es instanciar el cursor, el cual se encuentra dentro del entorno o contexto general de la API de Odoo.

  1. Para instanciar el cursor utilizamos "self.env.cr" y para crear una tabla "self.env.cr.execute"
  2. AƱadir la Ruta del CSV
  3. Crear la estructura en un arreglo tipo lista con las columnas del CSV.
  4. Volcar el CSV utilizando la función  "self.env.cr.copy_from"
  5. Cerrar el Archivo CSV.

self.env.cr.execute(""" CREATE TABLE IF NOT EXISTS odooacademy(
fecha_nacimiento date, edad integer,
nombre_curso text,
nombre_completo text)""")
self.env.cr.commit()
csv_file= open(filepath,"r")
columns=['fecha_nacimiento','edad','nombre_curso','nombre_completo']
self.env.cr.copy_from(csv_file, 'odooacademy', sep=',', columns=columns)
self.env.cr.commit()
csv_file.close()
Gracias por visitar mi Blog. ;-)

martes, 28 de enero de 2020

Instalar Python 3.7 en Ubuntu 16.04

Paso 1 - Instalación de Python 3.7 mediante Repositorios Externos.

  • Actualizamos los Paquetes y Repositorios necesarios
apt update
sudo apt install software-properties-common
  • AƱadimos el Repositorio
sudo add-apt-repository ppa:deadsnakes/ppa
Note: Puede pedirte Enter pasa continuar.
  • Una vez que termine la actualización, instalamos el paquete con el comando:
sudo apt install python3.7
Comprobamos la versión instalada:
python3.7 --version

Paso 2 Actualizamos las Alternativas de Python

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2



Paso 3 - Selecciona la opción Principal

sudo update-alternatives --config python3




Step 4 - Probar el Resultado

python3 -V

Notas:
Debemos instalar lo siguiente:

  • sudo apt-get install python3-pip
  • sudo apt-get install python3.7-sqlalchemy
  • sudo apt-get install python3.7-dev
  • sudo pip3 install --upgrade --force-reinstall setuptools

lunes, 1 de julio de 2019

Facturación Electrónica CFDI 3.3 con Complemento de Pagos para Odoo 8, Odoo 9 y Odoo 10

Factura Electrónica CFDI 3.3 con Integración de Pagos Electrónicos
(Complemento de Pagos)


Introducción a Facturación Electrónica CFDI 3.3

La Migración de Esquemas de Facturación Electrónica CFDI 3.2 a 3.3 se presento a comienzos del Año 2016 el cual tiene como objetivo cambiar la factura electrónica con el uso de plantillas y catÔlogos, con la finalidad de tener uniformidad en los datos registrados y que permitan a la autoridad fiscal identificar al contribuyente emisor y el tipo de transacción, los periodos de emisión del CFDI y fundamentalmente las fechas y formas de pago de los CFDI.

Este nuevo esquema se presenta como Opcional a partir del 1ro de Julio y como Obligatorio a partir del 1ro de Diciembre.

Debido a este nuevo reto y al mismo tiempo Obligación Fiscal, nos dimos a la tarea de desarrollar esta Solución Integrada 100 % a Odoo desde la Versión 7 (OpenERP) hasta Odoo 10.

El proceso es bastante sencillo y transparente para los usuarios finales.

Dentro de los cambios principales observaremos los CatƔlogos:
  • Uso CFDI
  • Formas de Pago
  • MĆ©todos de Pago
  • Impuestos
  • Catalogo Productos/Servicios
  • Unidades de Medida
  • Códigos Postales
Para el Uso de Comercio Exterior:
  • Ciudades
  • Localidades
  • Colonias
  • Paises
  • Estados
  • Pedimentos
  • Aduanas
Podemos observar toda la funcionalidad en el siguiente vĆ­deo:


Localizacion Mexicana Odoo con Facturacion Electronica 3.3

Cualquier información: info@argil.mx


viernes, 4 de enero de 2019

Cabeceras para Reportes Qweb

Tipos de Cabeceras para Reportes Qweb en Odoo 11 y Odoo 12



En la declaración de la Vista Qweb referente a nuestro Reporte en Odoo, podemos ejecutar 3 tipos:


  • basic_layout
    • Elimina la Cabecera de nuestros Reportes Odoo
  • external_layout
    • Genera un llamado al template que agrega la cabecera base de todos los Reportes
  • internal_layout
    • Genera un llamado al template base que solo contiene el numero de Pagina y el nombre de nuestra CompaƱia.

Ejemplos:


basic_layout


            <t t-call="web.basic_layout">
            </t>

external_layout


            <t t-call="web.external_layout">
            </t>

internal_layout


            <t t-call="web.internal_layout">
            </t>

Resultado:

basic_layout


external_layout


internal_layout


domingo, 4 de noviembre de 2018

Integración de Buzón Tributario con Odoo y OpenERP

Integración de Cancelaciones


De acuerdo a los nuevos lineamientos por parte del SAT para este aƱo 2018 sera obligatorio para los
Emisores de CFDI, la integración del Buzón Tributario para la generación de Solicitudes de Cancelación de Facturas, de acuerdo a los criterios establecidos por esta entidad.

Dentro de los criterios establecidos podemos encontrar lo siguiente:

Restricciones

  • Solo se permite generar 3 solicitudes como mĆ”ximo, si al tercer intento de cancelación no es
  • aceptada, esta se convierte en no Cancelable.
  • Solo se puede generar una nueva solicitud pasadas 24 horas de la ultima.
  • Si el CFDI tiene un documento relacionado vigente en el SAT la Factura no puede ser
  • Cancelable.

No requiere autorización

  • CFDI que ampare ingresos hasta 5,000 pesos con impuestos y retenciones.
  • CFDI de Nomina.
  • CFDI de Egresos como Notas de CrĆ©dito.
  • CFDI de Traslado, Carta Porte.
  • CFDI de Ingresos para Clientes con el RĆ©gimen de Incorporación Fiscal (RIF)
  • Que amparen CFDI de Retenciones.
  • CFDI Emitidos a Residentes en el Extranjero con el RFC: XEXX010101000.
Actualmente tenemos soportada esta modificaciones para las siguientes versiones del Sistema:
  • OpenERP 6.1
  • OpenERP 7.0
  • Odoo12
  • Odoo 11
  • Odoo 10
  • Odoo 09
  • Odoo 08
El siguiente video ejemplifica la forma de trabajar con esta nueva regla:



Cualquier información pueden encontrarme en los correos:
  • german.ponce@outlook.com 
  • info@argil.mx.