Gestión de almacenes en Dynamics NAV

Uno de los temas más importantes en cualquier despliegue de Navision, es la configuración del almacén, ya que es el elemento central en donde confluyen muchos de los módulos y funcionalidades. Por ejemplo, cualquier compra, venta, orden de fabricación… necesitará referenciar algún producto el cuál afectará a la cantidad de existencias en el almacén.

Flujo almacén Dynamics NAV
Flujo almacén Dynamics NAV

En Dynamics NAV, podemos gestionar el almacén en distintos niveles de complejidad; puede haber implementaciones en donde sólo queramos un inventario básico, y habrá otras implementaciones en donde queramos tener documentos de recepción, de picking, control de las ubicaciones, etc… En esta dirección tenemos un poco más de información sobre el diseño de los almacenenes en Dynamics NAV.

https://docs.microsoft.com/es-es/dynamics-nav-app/design-details-warehouse-setup

Es por ello, que en la base de datos de ejemplo de Navision, disponemos de varios almacenes de ejemplo donde poder probar todas estas funcionalidades. Por ejemplo, alguno de ellos son:

Almacén Azul

Es el almacen más básico, y soporta la funcionalidad básica de inventario. La gestión se realiza desde el propio documento de compra o venta. Por ejemplo, si en un pedido de compra, seleccionamos el almacén azul, veremos que para registrarlo, sólo debemos rellenar la columna de Cantidad a recibir.

Funcionalidad básica desde documento con almacén azul
Funcionalidad básica desde documento con almacén azul

Almacén Plata

En este almacén ya necesitamos gestionar ubicaciones. Cuando registramos un pedido de compra y seleccionamos el almacén plata, NAV nos pide la ubicación donde queremos almacenar dicho producto. Una vez lanzado el pedido de compra, debemos gestionar desde el módulo del almacén, dónde ubicaremos cada producto usando la funcionalidad de cantidad a manipular

Funcionalidad de ubicaciones con el almacén plata
Funcionalidad de ubicaciones con el almacén plata
Gestión de ubicaciones en Dynamics NAV
Gestión de ubicaciones en Dynamics NAV
Cantidad a manipular con gestión de ubicaciones en Dynamics NAV
Cantidad a manipular con gestión de ubicaciones en Dynamics NAV

Almacén Blanco

Este almacén tiene la funcionalidad más avanzada en NAV y tiene nivel de SGA. En este nivel necesitamos controlar ubicaciones, documentos de registro de envío, picking, etc… En este nivel, por ejemplo las recepciones pueden ir a un ubicación, pero los envíos pueden ir a otra. Una de las funcionalidades más interesante es la posibilidad de gestionar en un mismo documento de recepción, productos de varios pedidos de compra. En este ejemplo,  para la recepción de productos usamos la funcionalidad del documento de recepción del almacén, que además permite recepcionar productos de varios pedidos (10000 y 20000) a la vez, usando un filtro de varios pedidos.

 

Pedido 20000 almacén blanco
Pedido 20000 almacén blanco
Pedido 10000 almacén blanco
Pedido 10000 almacén blanco
Documento de recepción para el almacén blanco
Documento de recepción para el almacén blanco

 

Recepción de productos de varios pedidos en un mismo documento de recepción del almacén blanco
Recepción de productos de varios pedidos en un mismo documento de recepción del almacén blanco

Todas estas funcionalidades, se pueden configurar desde el propio almacén. En el apartado “Almacén” disponemos de distintas opciones donde podemos habilitar si requerimos documento de recepción, documento de envío, ubicación, documento de picking, etc… En el apartado “Ubicaciones” disponemos de distintas opciones donde podemos indicar las distintas ubicaciones que serán utilizadas tanto en Envíos, Compras, Producción, Ensablado, etc…

Distintas configuraciones que podemos adaptar en cada uno de los almacenes en Dynamics NAV
Distintas configuraciones que podemos adaptar en cada uno de los almacenes en Dynamics NAV

Para poder aprender más sobre cómo configurar el almacén en Dynamics NAV, disponemos de dos tutoriales donde se explica cómo trabajar con el almacén plata y el almacén blanco.

https://docs.microsoft.com/es-es/dynamics-nav-app/walkthrough-receiving-and-putting-away-in-basic-warehousing

https://docs.microsoft.com/es-es/dynamics-nav-app/walkthrough-receiving-and-putting-away-in-advanced-warehousing

Anuncios
Gestión de almacenes en Dynamics NAV

Conectar Odoo con Power BI

Aunque Odoo viene con innumerables informes, pivotes o tableros, siempre tendremos la necesidad de crear/obtener/mezclar la información de nuestro ERP con otros orígenes de datos tal como bases de datos, excels, etc… y ahí es donde una herramienta de Business Intelligence como PowerBI puede solucionarnos muchos problemas.

Conectar PowerBI a Odoo, nos permitirá acceder a toda la base de datos de Odoo y además poder relacionarla con otras bases de datos, una excel, etc.. además de poder luego analizarla, filtrarla, compartirla, etc.. por lo que poder conectar PowerBI a Odoo es una funcionalidad muy potente.

Para poder conectar PowerBI a Odoo, necesitamos realizar dos tareas:

– Configurar PostgreSQL para permitir conexiones externas
– Configurar PowerBI para conectar a PostgreSQL

Veamos cómo configurar cada una de ellas

Configurar PostgreSQL para permitir conexiones externas

Por defecto, PostgreSQL viene configurado para poder conectar a él  sólo desde la máquina local en donde está instalado y con ssl. Para poder conectar desde PowerBI, necesitamos habilitar la conectividad desde fuera y deshabilitar ssl (para conectar por ssl y cifrando el contenido, habría que instalar el certificado de postgresql en la máquina donde estuviera PowerBI). Toda esta configuración se hace desde el fichero postgresql.conf y debemos cambiar los parámetros listen_address y ssl:

Cambiamos
#listen_addresses = ‘localhost’
Por
listen_addresses = ‘*’

Cambiamos
#ssl=off
Por
ssl=off

 

Configuración fichero postgresql.conf
Configuración fichero postgresql.conf

 

Adicionalmente, debemos indicar qué usuario queremos que se conecte a qué base de datos de PostgreSQL. Por defecto, todos los usuarios puede conectarse a todas las bases de datos usando la máquina local, por lo que hay que cambiar la ip local por la ip donde esté powerbi, o poner la ip 0.0.0.0/0. Toda esta configuración se hace desde el fichero pg_hba.conf

Cambiamos
host all all 127.0.0.1/32 md5
Por
host all all 0.0.0.0/0 md5

Configuración archivo pg_hba.conf
Configuración archivo pg_hba.conf

Una vez modifiquemos estos dos ficheros, reiniciamos y postgresql ya estará listo para aceptar conexiones desde el exterior.

Configurar PowerBI para conectar a PostgreSQL

Una vez tenemos configurado PostgreSQL, configuramos PowerBI. Inicialmente, necesitamos descargar e instalar la herramienta de escritorio gratuita de PowerBI desde esta dirección

https://powerbi.microsoft.com/es-es/downloads/

Descargar la herramienta gratuita de escritorio de Power BI
Descargar la herramienta gratuita de escritorio de Power BI

Una vez instalada, si arrancamos PowerBI e intentamos conectar a una base de datos PostgreSQL, veremos que nos aparece un error:

Conexión con PostgreSQL desde Power BI
Conexión con PostgreSQL desde Power BI
Error componente de Power BI para conectar con PostgreSQL
Error componente de Power BI para conectar con PostgreSQL

Este error, nos está indicando que para conectar a PostgreSQL, necesitamos instalar un complemento adicional. Seleccionamos el enlace que nos proporciona el propio PowerBI y accederemos a la dirección de github, donde podremos descargar dicho componente: Npgsql 3.2.7

Descargar componente Npgsql
Descargar componente Npgsql

La instalación de dicho componente es muy sencilla, pero es importante marcar las 2 opciones para que instale todo correctamente (hay que instalar también Npgsql GAC Installation)

Instalar componente Descargar componente Npgsql
Instalar componente Descargar componente Npgsql

Una vez instalado el componente, si intentamos volver a conectar a PostgreSQL, veremos que ya nos deja. Nos pedirá:

  • IP donde tenemos alojado PostgreSQL (la base de datos de Odoo)
  • El nombre de la base de datos
  • Usuario
  • Contraseña
  • Nivel de acceso (dejamos el por defecto)
Pantalla de conexión a PostgreSQL
Pantalla de conexión a PostgreSQL

Al intentar conectar, veremos que nos aparece un mensaje de que la información no va cifrada (En caso de querer cifrar la información, hay que instalar el certificado de PostgreSQL en el equipo con el que conectamos con PowerBI). Aceptamos para conectar

Aviso cifrado información
Aviso cifrado información

y finalmente PowerBI, nos muestra las tablas de la base de datos para conectar y empezar a trabajar.

Tablas de Odoo en PostgreSQL
Tablas de Odoo en PostgreSQL
Conectar Odoo con Power BI

Conciliación bancaria en Odoo 10

Una de las funcionalidades más útiles que tienen los ERPs son la conciliación bancaria. Esta funcionalidad, permite “comparar” los pagos que registramos en el ERP, con el pago real del extracto bancario.

En España, tenemos desde hace varios años la norma 43, la cuál permite exportar desde las entidades bancarias el extracto bancario en formato texto, el cuál puede ser importado en los ERPs y gestionar la conciliación.

https://www.caixabank.es/deployedfiles/empresas/Estaticos/pdf/Transferenciasyficheros/q43Junio2012.pdf

En Odoo 10, tenemos la posibilidad de importar extractos bancarios en formato norma  43 si habilitamos el módulo correspondiente si tenemos instalado la localización española.

Módulo Odoo para la importación de extractos bancarios en formato Norma 43 de la localización Española

Por ejemplo, desde la Caixa, podemos descargar nuestro extracto bancario en formato norma 43.

Descarga de ficheros en norma 43 desde La Caixa
Descarga de ficheros en norma 43 desde La Caixa

Si abrimos el fichero descargado en un editor de texto, veremos que el formato en norma 43 es texto fijo. En este ejemplo en concreto, tenemos un extracto de 3 asientos donde uno es un cobro de un cliente, otro es un pago a un proveedor y otro es el pago de comisión bancaria.

Fichero extracto bancario en formato Norma 43

Para comprobar cómo funciona, creamos una factura de venta y una factura de proveedor en Odoo por las cantidades similares al del extracto. Además, la factura de venta, la registramos en Odoo como pagada.

 

Factura de venta registrada como pagada

 

Factura proveedor registrada

Para hacer la conciliación en Odoo, accedemos al menú de Contabilidad y en el tablero de contabilidad, en el diario de Banco, accedemos a la opción “Importar extracto”

Opción importación extracto bancario en Odoo
Opción importación extracto bancario en Odoo

Odoo nos solicita que importemos el fichero descargado del extracto bancario en formato norma 43

Opción importación formato norma 43
Opción importación formato norma 43

Una vez importado, vemos la pantalla de conciliación en Odoo. En el extracto descargado del banco teníamos 3 apuntes y en odoo 2 apuntes, es por ello que Odoo automáticamente sugiere la conciliación de la factura de compra y la factura de venta, ya que son de la misma fecha y del mismo importe. Odoo, además nos indica que el pago de la factura de venta ya fue registrada mostrándolo en color azul. Conciliamos ambas facturas con el botón de Validar.

Conciliación apuntes fra. venta y compras

¿y qué pasa con la comisión del banco? Podemos salir a contabilidad de Odoo y registrar un apunte analítico o un apunte contable por la cantidad de la comisión y volver a la conciliación, o podemos desde la propia pantalla de conciliación, registrar un apunte como contrapartida al importe de la comisión contra una cuenta del plan contable.

Opción para elegir contrapartida desde la conciliación en Odoo
Opción para elegir contrapartida desde la conciliación en Odoo

Al elegir una cuenta contable con el mismo importe en negativo como contrapartida, odoo ya nos habilita el botón de Conciliar con lo que ya podemos finalizar toda la conciliación.

Conciliación contrapartida desde Odoo
Conciliación contrapartida desde Odoo
Final de la conciliación
Final de la conciliación

Como comprobación, si accedemos por ejemplo a la factura de venta, veremos que aparecen como estado “conciliada”

Factura conciliada
Factura conciliada
Conciliación bancaria en Odoo 10

Instalar la localización Española en Odoo v10

En cualquier implantación de Odoo, es imprescindible instalar y configurar la localización correspondiente al país donde se implante. En concreto, en este post, vamos a ver cómo instalar la localización Española.

La localización española, permite instalar y configurar el Plan General Contable Español de 2008 y varios informes para la presentación de impuestos de AEAT.

Antes de empezar, necesitamos instalar varios módulos de prerrequisitos que pueden ser de python o del propio Odoo. Si los instalamos bajo Linux podemos usar pip, y si los instalamos bajo Windows, podemos descargar los módulos e instalarlos en la carpeta Server de Odoo.

En la carpeta Server de Odoo, instalamos estos módulos de python

https://pypi.python.org/pypi/Unidecode
https://pypi.python.org/pypi/unicodecsv/0.14.1

En nuestro Odoo, deberemos instalar el módulo base de nombres Geográficos, rango de fechas y un módulo base de impuestos.

https://www.odoo.com/apps/modules/10.0/base_location_geonames_import/
http://www.odoo.com/apps/modules/10.0/date_range/
http://www.odoo.com/apps/modules/10.0/account_tax_balance/

Una vez tenemos los prerrequisitos, ya podemos instalar la localización Española, para ello, la descargamos desde esta dirección:

https://github.com/OCA/l10n-spain

A la hora de descomprimir e instalar la localización, es muy importante que en el fichero de configuración odoo.conf , en la variable addons_path, pongamos la ruta de la localización como primera opción. De esta forma, cargará primero la localización Española, antes que cualquier módulo y Odoo podrá encontrarlo sin dificultad

addons_path = C:\Odoo10\server\odoo\addons\l10n-spain-10.0, C:\Odoo10\server\odoo\addons

Si hemos seguido estos pasos correctamente y actualizado las aplicaciones en Odoo, si accedemos a las aplicaciones y hacemos una búsqueda por el prefijo de la localización Española I10n_es, veremos que aparecen los módulos preparados para instalar y configurar.

Módulos localización Española Odoo v10
Módulos localización Española Odoo v10

 

 

 

Instalar la localización Española en Odoo v10

Módulos para implantar en Odoo 10

Si alguna vez, tenéis que migrar a Odoo v10 Comunity Edition, os encontraréis que os faltan muchos módulos o funcionalidades que sí existían en la v8 ó v9. En este post, hago una relación de varios módulos que pueden ser muy útiles en cualquier instalación Odoo v10.

Localización Española. Es el módulo más importante que debemos instalar ya que nos permite instalar y configurar el plan general contable Español de 2008, importar extractos bancarios con la norma 43 y generar varios informes para presentar impuestos a hacienda, tal como el modelo 303 de liquidación de IVA o del modelo 101 de retenciones IRPF. https://github.com/OCA/l10n-spain

Módulo para generar recibos domiciliados en formato SEPA
https://www.odoo.com/apps/modules/10.0/account_banking_sepa_direct_debit/

Módulo para activar el suministro inmediato de información en el IVA
https://www.odoo.com/apps/modules/10.0/l10n_es_aeat_sii/

Añade un campo “padre” en los proyectos para generar jerarquías de proyectos
https://www.odoo.com/apps/modules/10.0/project_parent/

Añade los equipos de trabajo en los proyectos
https://www.odoo.com/apps/modules/10.0/project_team/

Añade un campo departamento en los proyectos
https://github.com/OCA/project/tree/10.0/project_department

Añade un campo descripción a los proyectos
https://github.com/OCA/project/tree/10.0/project_description

Añade un campo “padre” para una cuenta analítica para generar jerarquía de cuentas analíticas
https://www.odoo.com/apps/modules/10.0/account_analytic_parent/

Añade los modos de pago
https://www.odoo.com/apps/modules/10.0/account_payment_mode/

Añade los modos de pago a la factura y a los clientes
https://www.odoo.com/apps/modules/10.0/account_payment_partner/

Crea una pestaña donde enlaza la factura original y la factura rectificativa
https://www.odoo.com/apps/modules/10.0/account_invoice_refund_link/

Añade un campo para rellenar el nombre comercial de los clientes
https://www.odoo.com/apps/modules/10.0/sale_commercial_partner/

Módulo para integrar MailChimp con Odoo
https://www.odoo.com/apps/modules/10.0/cenit_mailchimp/

Para activar el modo developer mode por defecto en el usuario admin
https://apps.odoo.com/apps/modules/10.0/admin_auto_debug_mode/

 

Módulos para implantar en Odoo 10

Cambiar los informes en Odoo v10

Una de las mejores funcionalides de Odoo v10 es que podemos crear y modificar informes fácilmente. Conociendo un poco de HTML y los campos de la base de datos, podemos entender qweb, que es el motor de plantillas que usa Odoo para los informes.

En cualquier implantación de Odoo, seguro que tenemos que modificar y adaptar la plantilla de nuestras facturas. Veamos cómo podemos hacerlo:

Todas las modificaciones de informes se realizan desde el menú de Configuración, apartado Técnico, Interfaz de usuario y opción Vistas.

Configuración de Vistas en Odoo
Configuración de Vistas en Odoo

Todos los informes (reports), tienen una cabecera (header) y un pie (footer) por defecto. En Odoo, podemos crear uno propio o usar el predeterminado. Para acceder a ellos, desde la vista hacemos una búsqueda introduciendo “external”. Veremos que aparecen varias vistas de tipo QWeb (osea informes). En concreto:

external_layout_header es la cabecera de los informes por defecto
external_layout_footer es la pie de los informes por defecto

Cabecera y pie de informes por defecto en Odoo
Cabecera y pie de informes por defecto en Odoo

Si accedemos a cualquiera de ellos, veremos en la pestaña Estructura, el código de la plantilla que es fácilmente editable.

Código plantilla report en Odoo
Código plantilla report en Odoo

Del mismo modo que podemos editar las cabeceras o pies, podemos editar el informe en sí. Para ello en la misma vista, hacemos una búsqueda por “report_invoice“, veremos que nos aparecen todos los informes relacionados con las facturas

Informes de facturas en Odoo
Informes de facturas en Odoo

En el caso en concreto de las facturas, el informe es el documento report_invoice_document, el cuál podemos editar fácilmente en Odoo, por ejemplo para añadir un campo más a la factura.

 

 

Cambiar los informes en Odoo v10

Migración módulos OpenERP a Odoo

Si alguna vez tenéis que migrar algún módulo desarrollado en OpenERP a Odoo, os encontraréis con varios problemas. Os pongo un breve resumen de varios temas a tener en cuenta en la migración del código.

  • En Odoo, el modelo principal cambia de OSV a model, por lo que los imports tendrán que usar models
    
    from openerp import models, fields, api
  • Por el motivo anterior, la declaración de las clases cambia de osv.osv a models.Model:
    class libro(models.Model):
  • En Odoo, desaparece la declaración de columns, ahora todos los atributos de la clase se declaran después de la propia clase:
    class libro(models.Model):
    _name = 'biblioteca.libro'
    _description = 'Esta clase representa un Libro'
    _order = "name"
    name = fields.Char('Nombre', size=64, required=True)
    num_pag = fields.Integer('Paginas', default=0)
    estado = fields.Selection((('n','No Leido'), ('l','Leido')),'Estado',readonly=True, default='n')
    libro()
  • Cambia la declaración de los campos/atributos de la clase
    de

    'name': fields.char('Autor', size=64, required=True),

    a

    name = fields.Char('Title', required=True)
  • En Odoo, los tipos de campos llevan mayusculas:
    en vez de fields.char ahora es fields.Char
  • La declaración de default desaparece y se incluye en cada campo
    num_pag = fields.Integer('Paginas', default=0)
  • En Odoo hacemos uso de los decoradores en el códigohttps://poncesoft.blogspot.com.es/2015/05/api-odoo-metaclases-y-decodarores.html
  • En las vistas, las etiquetas <data> sólo se refieren a datos y ya no se incluye en ellas las vistas ni formularios ni acciones
    <?xml version="1.0" encoding="utf-8"?>
    <openerp>
    	<data>
    		<!-- Data records go here -->
    	</data>
    	
    		<!-- Formulario Autor -->
    		<record model="ir.ui.view" id="autores_form">
    			<field name="name">autores_form</field>
    			<field name="model">biblioteca.autor</field>
    			<field name="type">form</field>
    			<field name="arch" type="xml">
    				
    <form string="Autor">
    					<field name="name"/>
    				</form>
    
    			</field>
    		</record>
    		
    		<!-- Vista Autor -->
    		<record model="ir.ui.view" id="autores_view">
    			<field name="name">autores_vista</field>
    			<field name="model">biblioteca.autor</field>
    			<field name="type">tree</field>
    			<field name="arch" type="xml">
    				<tree string="Autores">
    					<field name="name"/>
    				</tree>
    			</field>
    		</record>
    		
    		<!-- Accion Autor -->
    		<record model="ir.actions.act_window" id="autores_action" >
    			<field name="name">Autores</field>
    			<field name="res_model">biblioteca.autor</field>
    			<field name="view_type">form</field>
    			<field name="view_mode">tree,form</field>
    		</record>
    	
    		<!-- Acciones del Menu -->		
    		<menuitem name="Autores" id="autores_biblioteca_menu" parent="biblioteca_menu_general" action="autores_action" sequence="2" />
    	
    </openerp>
Migración módulos OpenERP a Odoo