Venta y devolución de mercancías con OpenERP 6
Tutorial para la venta y devolución de mercancías en la versión 6.0.1 estable utilizando tanto el módulo 'point_of_sale' como el módulo base 'sale'
Nota: Este tutorial se ha elaborado utilizando la versión 6.0.1 estable de OpenERP, concretamente con las siguientes revisiones:
-Addons: 4347 (20-01-2011 20:22:28)
-Servidor: 3317 (21-01-2011 05:58:28)
-Cliente GTK: 1793 (22-01-2011 06:03:35)
Los procesos aquí explicados pueden aplicarse también a la versión 5.0.x (aunque no se garantiza la funcionalidad de los mismos).
Hace poco nos surgió a través de un cliente una consulta acerca de cómo sería un proceso correcto de devolución de mercancías utilizando los módulos “mrp” y “point_of_sale” / ”sale” (claro ejemplo de uso de OpenERP como herramienta de gestión de ventas de productos almacenables en un entorno de mostrador). Revisando las distintas partes del flujo, lo cierto es que hay algunos puntos que pueden llevar a confusión o dejar al usuario en un punto en el que no sepa avanzar. Mediante este tutorial intentaremos reflejar un proceso de venta y devolución completo, en el que se refleje tanto el movimiento de mercancías a nivel de almacén como la contabilización de los distintos asientos contables generados.
Esta entrada está dividida en dos partes:
- PARTE 1: VENTA Y DEVOLUCIÓN DE MERCANCÍAS CON EL MÓDULO TERMINAL PUNTO DE VENTA
- PARTE 2: VENTA Y DEVOLUCIÓN DE
MERCANCÍAS CON EL MÓDULO BASE DE VENTAS
Módulos necesarios
Tras haber instalado la versión 6.0.1 estable de OpenERP con las revisiones anteriormente mencionadas (o alguna posterior) y arrancado el cliente GTK, procederemos a instalar en una BD limpia (u otra con datos) los siguientes módulos:
-”point_of_sale”: Módulo para gestionar las ventas de forma más rápida y sencilla, emulando los procesos de un Terminal Punto de Venta. El módulo ha sido desarrollado por ZikZakMedia, cuenta con una extensión llamada “point_of_sale_extension” y se encuentra disponible en los addons.
-”mrp”: Módulo base de gestión de almacén. Nos permitirá configurar las políticas de envío de productos, sus distintas ubicaciones, etc. Se complementa con el módulo “stock” con el que conseguimos, entre otras cosas, trazabilidad de productos, soporte a códigos de barras o implementar métodos de gestión de inventario (FIFO, LIFO, etc). Ambos módulos se encuentran también en los addons.
-”sale”: Módulo base de gestión de ventas: clientes, facturación, albaranes, etc. También se encuentra en los addons.
-”account”: Módulo base de gestión contable. Lo utilizaremos para manejar diarios, comprobar asientos, trabajar con facturas, etc. Disponible también en los addons.
Habiendo instalado estos módulos, deberíamos tener (por lo menos) las siguientes entradas de menú:
Configuración de clientes
Trabajando de forma habitual tendremos confeccionada ya en el ERP una lista de clientes/proveedores con sus datos de contacto. Sin embargo, es importante destacar la pestaña “Contabilidad” dentro de la ficha de cada uno, ya que, por defecto, OpenERP le asigna a cada nuevo Partner una cuenta 43000000 genérica de cobro y una 41000000 genérica de pago, lo que puede llevar a quebraderos de cabeza revisando después la contabilidad:
Configuración de diarios (opcional)
A la hora de contabilizar las ventas que realicemos por caja, es necesario configurar un diario bancario de tipo “Banco/Caja”. Para ello, la instalación básica de OpenERP trae varios por defecto (con nombres Cash, Cash Journal -(test) o Visa Journal). Podemos elegir uno de estos y modificarlo a nuestro gusto o crear uno nuevo desde Contabilidad-->Configuración-->Contabilidad Financiera-->Diarios. A mayores, podemos observar que en la pestaña “Terminal Punto de Venta” podremos especificar opciones como “Apertura automática de caja” o la lista de usuarios que tienen permisos para imputar ventas contra ese diario. En el caso que estamos desarrollando:
Configuración de productos (opcional)
Una de las limitaciones que tendremos a la hora de elaborar un pedido de venta con el módulo point_of_sale es que no podremos introducir un texto libre como concepto de línea de venta (al contrario que en los propios pedidos de venta del módulo sale). Por tanto, es recomendable configurar los productos (si es que no lo hemos hecho ya o hemos instalado una BD sin datos demo). Para este ejemplo, vamos a utilizar los que vienen por defecto con la instalación básica de OpenERP. Si no, podríamos definir los que nos interesasen desde el menú Terminal Punto de Venta-->Productos.
Configuración de hojas de caja
Para realizar el flujo de ventas desde el módulo “Terminal Punto de Venta” deberemos contar con un registro de caja abierto sobre el que se van a contabilizar los distintos movimientos de efectivo. Así, desde Terminal Punto de Venta-->Registro de caja podremos definir un nuevo registro de caja en el que figurará el saldo inicial repartido en las distintas cantidades y las transacciones que ha realizado dicha caja. Una vez introducidos los saldos, pulsaremos el botón “Abrir caja” para que nos actualice el saldo de apertura y el calculado. Un ejemplo de Hoja de Caja en estado abierto podría ser:
Configuración de tiendas
Para llevar a cabo estadísticas y análisis de ventas es importante que tengamos correctamente configuradas las tiendas desde las que vamos a vender. Para ello, nos dirigiremos a Ventas-->Configuración-->Ventas-->Tienda para editar o crear una tienda nueva. En este caso, hemos creado una tienda llamada “Tienda Principal” con las siguientes características:
PARTE 1: VENTA Y DEVOLUCIÓN DE MERCANCÍAS CON EL MÓDULO TERMINAL PUNTO DE VENTA
PASO 1: IMPUTAR UNA VENTA EN OPENERP CON EL MÓDULO TERMINAL PUNTO DE VENTA
Realizados los pasos previos de configuración, nos dirigimos ahora al menú Terminal Punto de Venta-->Operaciones Diarias-->Pedido de Venta
En la parte superior de este formulario rellenaremos el cliente (si es que ya lo tenemos registrado), un número de contrato (si es que aplica) y la tienda desde la que estamos vendiendo (nuestra “Tienda Principal” definida en el paso anterior). De momento, indicaremos en el campo “Ref. Venta” un texto libre (por ejemplo, una fecha y hora, el nombre del cliente, etc...).
Hecho esto, confeccionaremos nuestras líneas de pedido de venta introduciendo los distintos productos con sus cantidades, precios y descuentos (OpenERP establecerá los valores correspondientes de estas cantidades siempre basándose en la tarifa que hemos elegido aplicar para nuestro cliente):
Una vez revisada nuestra orden de venta (prestando también especial atención a la pestaña “Información extra” en la que indicaremos parámetros como “Cajero”, “Vendedor” o “Método de precio”), pulsaremos el botón “Realizar pago” para hacerla efectiva. En este caso, además, le hemos indicado que nos genere una factura de cliente:
Hecho esto, nos debería haber generado (al cabo de unos segundos) la factura en forma de documento PDF (que podremos reimprimir en cualquier momento con el botón “Reimprimir” que acaba de habilitarse en la vista principal de la venta):
y una entrada en la pestaña “Pago” de la orden de venta con el importe total:
Asimismo, en el registro de caja asociado (Terminal Punto de Venta -->Registros de caja) podremos observar cómo se ha imputado la transacción anterior (de 355,50 €):
Por último, si nos dirigimos al listado de Facturas de Cliente (Contabilidad-->Clientes-->Facturas de cliente) podremos ver qué nuestra factura está confirmada y contabilizada:
Y que se han realizado correctamente los movimientos de stock de los productos (desde Almacén-->Trazabilidad-->Movimientos de stock):
De esta forma, ya tendríamos finalizada nuestra venta.
PASO 2: DEVOLUCIÓN DE MERCANCÍAS
En nuestro caso (devolviendo sólo la torre) y eligiendo la opción "Refund without exchange", obtendríamos un pedido de venta rectificativo ("Refunded order") del siguiente estilo (tras haber agregado el campo 'cliente'):
- La hoja de caja habrá registrado correctamente la transacción:
- Y finalmente, el movimiento de stock también se habrá producido:
Nota: En caso de que hubiésemos escogido la opción "Return with Exchange" en el asistente de devolución, nos aparecería la siguiente pantalla preguntándonos qué producto queremos utilizar como sustituto:
Para a continuación crear un nuevo pedido de venta de la forma habitual (en este caso, he realizado el cambio por un módulo de memoria RAM de 22,50 € -simplemente por ilustrar el proceso-).
Quedándonos finalmente la venta original modificada de la siguiente forma:
PARTE 2: VENTA Y DEVOLUCIÓN DE MERCANCÍAS CON EL MÓDULO BASE DE VENTAS
PRERREQUISITOS
Antes de abordar este proceso es importante haber configurado el plan contable de la compañía del usuario activo (desde Contabilidad-->Configuración-->Contabilidad Financiera-->Configuración financiera para una nueva compañía), ya que si no, tendremos problemas a la hora de validar las facturas que generemos. Asimismo, es importante tener definidas ubicaciones, almacenes y tiendas para reflejar correctamente los movimientos de stock en el proceso de venta.
PASO 1: REALIZACIÓN DE UNA VENTA CON EL MÓDULO BASE DE VENTAS
Para esta parte, vamos a presuponer que existe un diario de ventas asociado a la compañía del usuario actual correctamente configurado y asociado a un diario analítico, como por ejemplo:
y que realizamos una venta de forma habitual (desde el menú Ventas-->Pedidos de Ventas):
En el momento en que confirmemos dicha venta (mediante el botón correspondiente), se nos habrán generado dos albaranes de salida (uno con el movimiento de stock desde “Stock” a “Salida” y otro con el movimiento desde “Salida” a “Clientes”) que podremos comprobar desde la pestaña “Historial” de la orden de venta:
Vamos ahora a crear la factura correspondiente a esta orden de ventas mediante el botón “Crear factura final”. Esto hará que se nos abra una nueva pestaña con los datos de la factura rellenados en gran medida:
Si ahora validamos la factura, ya tendríamos nuestra venta contabilizada en forma de un asiento contable similar a este:
Si ahora volvemos a los pedidos de venta, podremos comprobar que el pedido que hemos modificado aparece facturado al 100%. Lo que nos resta ahora es hacer efectivo el movimiento de mercancías. Para ello, nos dirigimos a la pestaña “Historial” y hacemos doble click encima de uno de los albaranes creados (uno con el movimiento virtual y otro con el movimiento real: de nuestra Ubicación a la ubicación “Clientes”).
Ahora le indicaremos bien comprobar disponibilidad o bien forzar disponibilidad (según nos interese) y finalmente pulsaremos encima de “Process” para hacer efectivo el albarán. Hecho esto, nuestra orden de venta tendrá el siguiente aspecto:
En este punto ya podríamos dar por finalizado el proceso de venta.
PASO 2: DEVOLUCIÓN DE MERCANCÍAS CON EL MÓDULO BASE DE VENTAS
Dada la situación descrita en el Paso 1 y el siguiente albarán de salida asociado:
supongamos que al día siguiente nos vuelve el cliente y quiere devolver la mercancía;entonces volveríamos a nuestro albarán de salida (podemos poner los "Albaranes de Salida" como atajo en el menú principal para acelerar el proceso) y lanzar el asistente "Devolver productos". En este asistente lo interesante es saber diferenciar qué hacen los dos estados de facturación disponibles:
a) 'Para ser abonado/facturado': Nos permitirá facturar desde el albarán
b) 'No facturación': Tendremos que crear una factura rectificativa de abono a mano
Por tanto, vamos a elegir el estado 'Para ser abonado/facturado', ya que nos aligerará el proceso.
Confirmando el asistente nos habrá creado nuestro 'Albarán de Entrada' correspondiente en estado "Disponible" (y con la coletilla “-return” en la referencia). En este momento, todavía no se ha hecho "efectivo" el movimiento stock, pero sí que se ha registrado un movimiento "virtual". Para hacer efectivo ese movimiento de stock (que vuelva ese producto a stock), tendremos que pulsar en "Procesar" y validar el movimiento de productos asociado. Tras la ejecución de este asistente, ya habremos finalizado el flujo relativo a la mercancía. Lo podemos comprobar porque ha cambiado el estado del albarán a "Realizado".
Lo que nos falta ahora es contabilizar ese movimiento de entrada de stock mediante una factura rectificativa de abono. Para ello, desde el propio albarán, lanzamos el asistente de "Crear factura" en el que elegiremos una fecha de facturación y un diario donde reflejar los apuntes procedentes de facturas rectificativas:
Obtendremos una factura rectificativa de abono de cliente como la siguiente, habiendo cambiado además el campo “Control de factura” del albarán por “Facturado”.
Ahora lo que nos restaría sería confirmar esta factura de forma habitual para que se refleje en el movimiento contable correspondiente (pestaña "Otra información" de la factura).


































cerrar caja de cash
Tengo entendido que para poder hacer una venta en el POS se tiene que tener abierta una caja, en esa caja se registran todas las transacciones y solo al final del dia se reflejan en la contabilidad al cerrar la caja.
En su ejemplo se paga la factura y se hacen los asientos directamente y en la contabilidad todo se refleja normal, pero si despues cierras la caja aparecera duplicado ese pago (uno dira que viene el pago de facturacion y el otro del POS). Eso me ha pasado a mi, pero me gustaria saber si tengo que hacer un cambio en mi contabilidad, use la que viene en la doc de openERP.
Por su atencion gracias edroshz@hotmail.com