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

Mostrando las entradas con la etiqueta odoo ubuntu. Mostrar todas las entradas
Mostrando las entradas con la etiqueta odoo ubuntu. Mostrar todas las entradas

martes, 4 de agosto de 2020

Demonio - Servicio para Odoo13 Ubuntu 17.x Ubuntu 18.x Ubuntu 20.x

Servicio Systemctl en Ubuntu para nuestra instalación de Odoo
FƔcil y RƔpido


Creamos el servicio en la ruta: /usr/lib/systemd/system

Usamos el comando nano /usr/lib/systemd/system/odoo-server.service y pegamos la instrucción en mi caso mi Odoo esta en el directorio /odoo13


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Unit]

Description=Servicio Arranque Odoo13

After=network.target

[Service]

Type=simple

Restart=always

RestartSec=1

User=odoo

ExecStart=/usr/bin/python3 /odoo13/odoo-bin -c /odoo13/odoo-server.conf



[Install]

WantedBy=multi-user.target

Reiniciamos los para ctualziar los nuevos servicios disponibles:

systemctl daemon-reload

Iniciamos como prueba nuestro servicio:

systemctl start odoo-server

Habilitamos con el servicio para iniciar con el Sistema Operativo:

systemctl enable odoo-server


NOTAS:
El directorio de Python es obligatorio, se tiene que escribir la ruta completa del binario de python ya sea que este en la ruta por defecto o que lo hayamos compilado manualmente.

jueves, 4 de junio de 2020

Validar un rango de fechas en Odoo por medio de atributos en la vistas

Restricción en periodo de fechas




     Dentro de Odoo muchas veces requerimos tener un asistente que nos obtenga información dentro de un periodo establecido por el usuario o para determinar la validez de un documento dentro del mismo periodo. Al realizar este tipo de modificaciones o asistentes muchas veces descartamos o llegamos a ignorar la validación del periodo que el usuario introduce que en ocasiones puede ser un Bug que no permita la funcionalidad correcta al buscar información, una solución simple seria aƱadir un constraint para que por medio de python validarĆ­amos la información pero dentro de las mismas vistas podemos determinar esta validación sin programar nada adicional.

La sintaxis es la siguiente:

<field name="start_date" widget="daterange" options='{"related_end_date": "end_date"}'/>


El parĆ”metro o campo start_date hace referencia a nuestra fecha inicial y para la fecha final tenemos end_date


Para realizar la validacion basta con aƱadir las opciones que podemos visualizar en la sintaxis:

options='{"related_end_date": "end_date"}'

Recordemos que start_date y end_date son los nombres con los cuales generamos los campos en Odoo, pero no es obligatorio que se llamen exactamente como en el ejemplo.

miƩrcoles, 3 de junio de 2020

Implementando STP con Python

Como utilizar SFTP desde Python


El fragmento para poder copiar un archivo a un servidor sftp es el siguiente:
import paramiko
import os

paramiko.util.log_to_file('logfile.log')

host = "101.102.103.104"
port = 22
transport = paramiko.Transport((host, port))
password = "pass"
username = "user"
transport.connect(username = username, password = password)


sftp = paramiko.SFTPClient.from_transport(transport)

filepath = '~/remote/file'
localpath = '~/local/file'
sftp.get(filepath, localpath)

sftp.close()
transport.close()

Espero que les sea de utilizad.

jueves, 21 de mayo de 2020

Solución al error con Nginx ssl_error_bad_cert_domain

Solución al Error ssl_error_bad_cert_domain


Si tenemos un error al configurar nuestro dominio nginx con letsencrypt se debe a que el certificado ssl requiere expandir a ambas url, para ello ejecutamos el comando:

 letsencrypt certonly --standalone -d midominio.mx -d www.midominio.mx


La configuración de nginx quedaria (midominio.mx) --> /etc/nginx/sites-enabled:

upstream oddo {
    server 127.0.0.1:8069;
}

server {
    listen      443 default;
    server_name midominio.mx www.midominio.mx;

    access_log  /var/log/nginx/oddo.access.log;
    error_log   /var/log/nginx/oddo.error.log;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/midominio.mx/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/midominio.mx/privkey.pem;
    keepalive_timeout   60;

    #ssl_ciphers             HIGH:!ADH:!MD5;
    #ssl_protocols           SSLv3 TLSv1;
    ssl_prefer_server_ciphers on;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    proxy_buffers 16 64k;
    proxy_buffer_size 128k;

    location / {
        proxy_pass  http://oddo;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;

        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto https;
        proxy_read_timeout 300000;

    }

    location ~* /web/static/ {
        proxy_cache_valid 200 60m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://oddo;
    }
}

server {
    listen      80;
    server_name midominio.mx www.midominio.mx;

    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^/.*$ https://$host$request_uri? permanent;
}

domingo, 29 de marzo de 2020

Presicion Decimal en Odoo 13

Creación de Campos con Decimales Dinamicos




Como habíamos mencionado en post anteriores podemos definir una presicion dinÔmica que nos permita gestionar de forma modificable el no. de decimales para la definición de los campos en una clase.

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
   <data>
  <!--  Mi presicion decimal-->

  <record model="decimal.precision" id="precision_discounts">
    <field name="name">Discount</field>
    <field name="digits">6</field>
  </record>  

   </data>
</odoo>

Al instalar nuestro modulo o actualizarlo, nos creara el registro correspondiente al XML:


El valor digits es el numero de decimales que tendra el campo que lo utilice como su presición decimal.

El paso final es asignar esta presición en la creación del campo en una clase Odoo.

# -*- coding: utf-8 -*-
from openerp.exceptions import UserError
from openerp import api, fields, models, _, tools

class Accountinvoice(models.Model):
    _inherit = 'account.invoice'
    _name = 'account.invoice'
    
    invoice_discount_amount = fields.Float(digits='Discount', 
                                string='Descuento Total en Monto')


En el ejemplo anterior herede facturas y cree mi campo llamado Descuento Total con 6 Decimales en su parte flotante, el campo se visualiza de la siguiente manera en el Sistema:

Si modificamos la presición decimal a 4.


Veriamos el campo actualizado y los registros anteriores redondeados al nuevo numero de decimales.

Una presición puede ser reutilzada muchas veces no es necesario crear una por cada campo a menos que el proceso lo requiera.

Espero que les ayude esta información y no se olviden dejar sus comentarios.




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







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


jueves, 4 de octubre de 2018

Instsalación Odoo 12 en Linux

Instalación Odoo 12 en Linux, Ubuntu Server y Desktop 16.x , Ubuntu 17.x y Ubuntu 18.x


PASOS PARA LA INSTALACIƓN: 


Antes que nada necesitamos instalar las dependencias que utiliza Odoo (una dependencia es una aplicación o una biblioteca requerida por otro programa para poder funcionar correctamente. Por ello se dice que dicho programa depende de tal aplicación o biblioteca).
Antes de instalar las dependencias, necesitamos una actualizacion de los repositorios:
sudo apt-get update && sudo apt-get upgrade
Creamos un directorio en la ruta /opt llamada Odoo:
cd /opt
Despues:
sudo mkdir odoo
Cambiamos los permisos de la carpeta odoo al usuario que usara esta ruta (german es el usuario del sistema):
sudo chown german.german * -R odoo
Descargamos Odoo desde el Repositorio Oficial:
sudo git clone https://www.github.com/odoo/odoo --depth 1 --branch 12.0 --single-branch .
Instalamos las dependencias de la aplicación:
sudo pip install -r /opt/odoo/doc/requirements.txt
sudo pip install -r /opt/odoo/requirements.txt

Creamos nuestro Usuario Postgres


Entramos al prompt de postgres:
sudo su postgres
Creamos el Usuario:
createuser -s -P -e odoo
Tecleamos la contraseña (odoo) 2 veces. Ahora para evitar algún error modificamos el template principal de postgres (template1)
psql template1
Y una vez dentro del template:
alter role odoo with password 'odoo';
Para salir del prompt de postgres solo ejecutamos:

psql \q

Instalación Dependencias Externas


sudo apt-get install nodejs -y
sudo apt-get install npm -y
apt-get install node-less
sudo npm install -g less
sudo npm install -g less-plugin-clean-css
sudo ln -s /usr/local/bin/lessc /usr/bin/lessc
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo apt-get install sassc

Iniciamos nuestro Servidor de Odoo 12


Creamos nuestro archivo de configuracion de Odoo, para ello vamos al directorio de instalación (/opt/odoo/) y ejecutamos:
python odoo-bin -c odoo.conf -s
Lo que estamos haciendo es crear un archivo de configuración para Odoo.
Ahora debemos pausar la ejecución del servidor con la combinación de teclas ctr+c.
Listo, ahora editamos el archivo de configuración llamado odoo.conf, con el editor vi, vim, nano o gedit si estÔn en modo grÔfico y modificamos los valores:
db_host = localhost
db_maxconn = 64
db_name = False
db_password = odoo
db_port = 5432
db_template = template1
db_user = odoo
Guardamos y ahora para ejecutar el servidor odoo, usamos el comando:
python /opt/odoo/odoo-bin -c /opt/odoo/odoo.conf
Una Captura de Odoo 12:

Desde mi perspectiva Odoo 12 es 3 veces mas rapido y mejor optimizado en cuestion del manejo de Datos, podemos optimizar aĆŗn mas el rendimiento montando un Servidor Web (Nginx) con un certificado de Serguridad HTTPS.
Y ahora con el manejo de Multi Sitios Web.

jueves, 17 de mayo de 2018

Duplicar Base de Datos en 5 Minutos Odoo y PostgreSQL

Duplicar una base de datos a nivel directorio Fisico PostgreSQL


Todas las Bases de Datos creadas en Postgres son guardadas en archivos y directorios del Sistema Operativo, utilizando un metodo sencillo podemos duplicar una Base de Datos a nivel fisico.

1. Creamos nuestra Base de Datos copia

Creamos nuestra Base de Datos Copia por medio de terminal.

sudo su postgres

createdb BASE_2 -O odoo10

2. Verificamos el Nombre del Directorio

El ID origen llamado OID en el template de postgres, es el nombre del directorio que contiene tu Base de Datos, es necesario conocerlo para poder duplicar nuestra Base de Datos.

Obtenemos el OID de la Base Origen

sudo su postgres

psql template1

select datname,oid from pg_database where datname like 'BASE_ORIGEN';

Obtenemos el OID de la Base Destino

sudo su postgres

psql template1

select datname,oid from pg_database where datname like 'BASE_2';

3. Nos colocamos en el directorio de Postgres

En este ejemplo estoy utilizando PostgreSQL 9.6 y el ejemplo que mostrare es la ubicacion de mis bases de datos.

cd /var/lib/postgresql/9.6/main/base


4. Duplicamos el Directorio de la Base Origen

Es Importante que este proceso lo hagamos con el usuario postgres del Sistema Operativo.

El primer Base es Eliminar el Directorio de nuestra Base 2

rm -r OID_BASE_2


Como paso final duplicamos el directorio de la Base Origen a la Base 2 

cp OID_ORIGEN OID_BASE_2


Listo, con estos sencillos pasos obtenemos una copia de nuestra Base de Datos de una forma rapida y sin esperar.

Nota Importante: Es importante tambien, duplicar el directorio de archivos binarios (data_dir) de tu base de datos origen con el nombre de tu base de datos destino.

miƩrcoles, 18 de abril de 2018

Lectura Archivos Python 3 y Odoo 11

Lectura de archivos y conversión a base64




La actual migración de Python 2.7 a Python 3 para Odoo 11, fue un gran cambio en el manejo de algunos tipos de datos, por ejemplo en la lectura de un archivo que puede ser una imagen, un csv o un txt nos llega a generar errores ya que nos puede devolver una instancia IO o generarnos algunos errores, para ello me di a la tarea de indagar en el manejo interno de Odoo y el mismo me dio la solución, una pequeña linea capaz de leer cualquier archivo y convertirlo a Base64 para grabarlo en un Campo Binario de nuestra Tabla.

Primero Debemos Importar la libreria base64:

# -*- coding: utf-8 -*-

import base64



Ahora debemos obtener la ruta de la Imagen o archivo que queremos grabar en nuestra tabla, por ejemplo /tmp/qr_cfdi.png

La lectura de mi archivo y conversión quedaria de la siguiente manera:

f_b64 = base64.b64encode(open('/tmp/qr_cfdi.png','rb').read())


El paso final seria grabarlo en la tabla correspondiente, en mi caso la imagen QR necesito guardarla en la tabla de Facturas (account.invoice).

invoice_br = self.env['account.invoice].browse(ID_FACT)

invoice_br.cfdi_cbb = f_b64

# Utilizando el Metodo Write:

invoice_br.write({'cfdi_cbb':f_b64})



El ejemplo anterior utiliza el metodo browse para poder obtener una instancia de Facturas del registro en el cual quiero grabar la imagen obtenida de otro proceso, el campo cfdi_cbb es un binario de la tabla donde quiero guardar la imagen y el resultado podria observarse como la siguiente imagen:




martes, 31 de octubre 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.





Facturacion electronica CFDI 3.3 con complemento de Pagos:

https://poncesoft.blogspot.mx/2017/09/facturacion-electronica-cfdi-33-con.html

Cualquier información: info@argil.mx


viernes, 6 de octubre de 2017

Instalación Odoo 11 en Linux

Instalación Odoo 11 en Linux, Ubuntu 16.x , Ubuntu 17.x y Ubuntu Server


PASOS PARA LA INSTALACIƓN: 

Antes que nada necesitamos instalar las dependencias que utiliza Odoo (una dependencia es una aplicación o una biblioteca requerida por otro programa para poder funcionar correctamente. Por ello se dice que dicho programa depende de tal aplicación o biblioteca).
Antes de instalar las dependencias, necesitamos una actualizacion de los repositorios:
sudo apt-get update && sudo apt-get upgrade
Abrimos una Terminal de Ubuntu o una manera rƔpida es presionando las teclas Alt+Ctrl+T y escribimos lo siguiente:
sudo apt-get install subversion git bzr bzrtools python-pip postgresql python-all-dev 
python-dev python-setuptools libxml2-dev libxslt1-dev libevent-dev libsasl2-dev
libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev 
liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev python-tk libyaml-dev 
fontconfig node-less python-pip gdebi-core python-dateutil python-feedparser python-ldap
python-libxslt1 python-lxml python-mako python-openid python-psycopg2 python-pybabel 
python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz 
python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml 
python-zsi python-docutils python-psutil python-mock python-unittest2 python-jinja2 
python-pypdf python-decorator python-requests python-passlib python-pil -y
Nota: Debemos copiar y pegar las dependencias en un bloc de notas y quitar los saltos de linea que tiene el formato del Blog.
Creamos un directorio en la ruta /opt llamada Odoo:
cd /opt
Despues:
sudo mkdir odoo
Cambiamos los permisos de la carpeta odoo al usuario que usara esta ruta (german es el usuario del sistema):
sudo chown german.german * -R odoo
Descargamos Odoo desde el Repositorio Oficial:
sudo git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 --single-branch .
Instalamos las dependencias de la aplicación:
sudo pip install -r /opt/odoo/doc/requirements.txt
sudo pip install -r /opt/odoo/requirements.txt

Creamos nuestro Usuario Postgres
Entramos al prompt de postgres:
sudo su postgres
Creamos el Usuario:
createuser -s -P -e odoo
Tecleamos la contraseña (odoo) 2 veces. Ahora para evitar algún error modificamos el template principal de postgres (template1)
psql template1
Y una vez dentro del template:
alter role odoo with password 'odoo';
Para salir del prompt de postgres solo ejecutamos:
psql \q
Creamos nuestro archivo de configuracion de Odoo, para ello vamos al directorio de instalación (/opt/odoo/) y ejecutamos:
python odoo-bin -c odoo.conf -s
Lo que estamos haciendo es crear un archivo de configuración para Odoo.
Ahora debemos pausar la ejecución del servidor con la combinación de teclas ctr+c.
Listo, ahora editamos el archivo de configuración llamado odoo.conf, con el editor vi, vim, nano o gedit si estÔn en modo grÔfico y modificamos los valores:
db_host = localhost
db_maxconn = 64
db_name = False
db_password = odoo
db_port = 5432
db_template = template1
db_user = odoo
Guardamos y ahora para ejecutar el servidor odoo, usamos el comando:
python /opt/odoo/odoo-bin -c /opt/odoo/odoo.conf
Una Captura de Odoo 11:

Desde mi perspectiva Odoo 11 es 3 veces mas rapido y mejor optimizado en cuestion del manejo de Datos, podemos optimizar aĆŗn mas el rendimiento montando un Servidor Web (Nginx) con un certificado de Serguridad HTTPS.

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, 1 de agosto 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 ....


Facturacion electronica CFDI 3.3 con complemento de Pagos:

https://poncesoft.blogspot.mx/2017/09/facturacion-electronica-cfdi-33-con.html


Cualquier información: info@argil.mx


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.




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.



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.


Odoo 8.0:

Change the password directly in the Postgres Database, as it is saved in plain text:
~$  sudo su postgres
~$  psql
postgres=# \connect Your_Database_Name
You are now connected to database "Your_database_Name" as user "postgres"
YOurDatabase_Name=# update res_users set password='YourNewPassword' where id='1';

Odoo 9.0 and Odoo 10.0:

Create a hash and then change the hash in the Postgres database:
~$ python
>>> from passlib.context import CryptContext
>>> print CryptContext(['pbkdf2_sha512']).encrypt('YourNewPassword')
Copy the Hash created
Ctrl D
~$  sudo su postgres~$  psqlpostgres=# \connect Your_Database_NameYou are now connected to database "Your_database_Name" as user "postgres"
YOurDatabase_Name=# UPDATE res_users SET password='', password_crypt='YourCopiedHash' WHERE id=1;YOurDatabase_Name=# \q

Odoo 11:

Create a hash using Python 3 and change the hash in the Postgres database:
~$ python3
>>> from passlib.context import CryptContext
>>> setpw = CryptContext(schemes=['pbkdf2_sha512'])
>>> setpw.encrypt('YourNewPassword')
Copy the Hash created
Ctrl D
~$  sudo su postgres
~$  psql
postgres=# \connect Your_Database_Name
You are now connected to database "Your_database_Name" as user "postgres"
YOurDatabase_Name=# UPDATE res_users SET password='', password_crypt='YourCopiedHash' WHERE id=1;
YOurDatabase_Name=# \q

Odoo 12 and Odoo 13:

Create a hash using Python 3 and change the hash in the Postgres database:
~$ python3
>>> from passlib.context import CryptContext
>>> setpw = CryptContext(schemes=['pbkdf2_sha512'])
>>> setpw.encrypt('YourNewPassword')
Copy the Hash created
Ctrl D
~$  sudo su postgres
~$  psql
postgres=# \connect Your_Database_Name
You are now connected to database "Your_database_Name" as user "postgres"
YOurDatabase_Name=# UPDATE res_users SET password='YourCopiedHash' WHERE id=2;YOurDatabase_Name=# \q

viernes, 2 de diciembre de 2016

Retornar un reporte mediante una función Python en Odoo

Retornar un reporte mediante un botón en Odoo


    
La ejecución y el manejo de los reportes mediante funciones en odoo, se hace de la siguiente manera:

# -*- coding: utf-8 -*-
def print_report(self):
    return self.env['report'].get_action(self, 'modulo.nombre_tecnico_reporte')

La parte importante en este boton es invocar el reporte correcto, primero el nombre del modulo seguido de un punto y por ultimo el nombre tecnico del reporte.

Otra parte importante es que self contiene los ids de los registros que tenemos que imprimir, entonces si queremos imprimir varios registros al mismo tiempo bastarĆ­a con tener una instancia de ellos.