Extensiones de precios

En Odoo, el precio se determina a partir del Precio de venta de un producto y de las tarifas. Los módulos eYssen de esta página amplían ese mecanismo con etiquetas de tarifa, un orden de reglas explícito, una segunda divisa de precio, una tabla de pares de divisas fijos, los precios de tarifa mostrados en el propio producto, importaciones desde hojas de cálculo y un historial de precios completo.

Etiquetas de tarifa

eyssen_product_pricelist_tag permite que una regla de tarifa se aplique a una etiqueta en lugar de a un solo producto, una variante o toda una categoría de producto, de modo que un descuento pueda aplicarse a un grupo de productos elegido libremente que atraviese los límites de las categorías.

Las etiquetas se gestionan en Ventas ‣ Configuración ‣ Etiquetas de tarifa; cada una tiene un nombre Etiqueta traducible y un Color. Los productos llevan sus Etiquetas de tarifa en el formulario del producto, y una regla de tarifa obtiene Etiqueta como opción adicional en su campo Aplicar en, con un campo Etiqueta para elegirla. La regla se nombra entonces según la etiqueta (Etiqueta: Rebajas de invierno) en la lista de reglas de la tarifa.

screenshot: inventory-pricing-pricelist-tag-rule
menu
Sales ‣ Products ‣ Pricelists ‣ (a pricelist)
shows
A pricelist rule whose "Apply On" is set to "Tag", with the "Tag" field filled in, listed among the pricelist's other rules where its name reads "Tag: <tag name>".
highlight
The "Apply On" and "Tag" cells (red frame).
data
Pricelist "Public (HUF)"; rule applying a 20% discount to the tag "Winter sale".
module
eyssen_product_pricelist_tag
notes
English UI, light theme, 1440px width, crop to the rule lines.
screenshot: inventory-pricing-pricelist-tags-on-product
menu
Inventory ‣ Products ‣ Products ‣ (a product)
shows
The "Pricelist Tags" field of a product form holding two coloured tags.
highlight
The "Pricelist Tags" field (red frame).
data
Tags "Winter sale" and "Clearance".
module
eyssen_product_pricelist_tag
notes
English UI, light theme, 1440px width, crop to the field.

Importante

Cuando un producto lleva varias etiquetas que tienen cada una su propia regla, la regla que aplica el descuento más pequeño es la que prevalece actualmente. Asigne etiquetas solapadas de forma deliberada, o mantenga una sola etiqueta por producto y por tarifa.

Cinta de la tienda web a partir de una etiqueta

eyssen_product_pricelist_tag_ribbon vincula una etiqueta de tarifa a una cinta de la tienda web: un campo Cinta en la etiqueta indica la cinta a mostrar, y asignar la etiqueta a un producto establece automáticamente la cinta de ese producto en el sitio web. Dos botones de ajustes mantienen sincronizados los productos existentes: Actualizar todo vuelve a aplicar la cinta de la primera etiqueta de cada producto, y Limpiar todo elimina la cinta de todos los productos.

screenshot: inventory-pricing-tag-ribbon
menu
Sales ‣ Configuration ‣ Pricelist Tags ‣ (a tag)
shows
A pricelist tag form with the "Ribbon" field selected.
highlight
The "Ribbon" field (red frame).
data
Tag "Winter sale" linked to the ribbon "Sale".
module
eyssen_product_pricelist_tag_ribbon
notes
English UI, light theme, 1440px width, crop to the form.

Orden de las reglas de tarifa

eyssen_product_pricelist_sequence añade una Secuencia a las reglas de tarifa, de modo que el orden en que se evalúan puede establecerse explícitamente arrastrando el asa en la lista de reglas, en lugar de depender del orden natural de las reglas. Esto importa en cuanto varias reglas puedan coincidir con el mismo producto, por ejemplo una regla de etiqueta y una regla de categoría.

Precios de tarifa en el producto

eyssen_product_show_pricelist_price lleva los precios de tarifa al propio producto, de modo que un vendedor no tiene que abrir cada tarifa para compararlos.

En una tarifa (Ventas ‣ Productos ‣ Tarifas), tres interruptores deciden dónde se muestra el precio de esa tarifa:

  • Mostrar en el formulario del producto;

  • Mostrar en la lista de productos; y

  • Mostrar en el kanban de productos.

Activar Mostrar en la lista de productos o Mostrar en el kanban de productos crea una columna de precio para esa tarifa, disponible desde el selector de columnas opcionales. El formulario del producto muestra además un resumen Todos los precios que enumera el precio actual del producto en cada tarifa, calculado para la fecha de hoy.

screenshot: inventory-pricing-show-pricelist-price-settings
menu
Sales ‣ Products ‣ Pricelists ‣ (a pricelist)
shows
A pricelist form with the "Display on Product Form", "Display on Product List" and "Display on Product Kanban" switches.
highlight
The three switches (red frame).
data
Pricelist "Public (HUF)" with all three enabled.
module
eyssen_product_show_pricelist_price
notes
English UI, light theme, 1440px width, crop to the switches.
screenshot: inventory-pricing-all-prices-on-product
menu
Inventory ‣ Products ‣ Products ‣ (a product)
shows
The "All Prices" summary on a product form, listing each pricelist with the price it currently gives for this product.
highlight
The "All Prices" block (red frame).
data
Three pricelists with different prices for the same product.
module
eyssen_product_show_pricelist_price
notes
English UI, light theme, 1440px width, crop to the block.

Precio de venta en una divisa extranjera

product_currency_price permite mantener el precio de venta de un producto en una divisa de proveedor o de tarifa, mientras que el precio en la divisa de la compañía se deriva de ella, lo que mantiene un catálogo importado alineado con el tipo de cambio.

Primero, marque las divisas que se van a ofrecer (Contabilidad ‣ Configuración ‣ Divisas):

  • Mostrar en el producto — permite introducir en un producto un precio de venta en esta divisa.

  • Margen del precio de venta (%) — el porcentaje que se añade al importe convertido. Un margen de 2.5 significa que el precio de venta en la divisa de la compañía es el importe convertido multiplicado por 1.025.

screenshot: inventory-pricing-currency-settings
menu
Accounting ‣ Configuration ‣ Currencies ‣ (a currency)
shows
A currency form with the "Show on Product" checkbox enabled and the "Sales Price Markup (%)" field filled in.
highlight
The two fields (red frame).
data
Currency EUR, markup 2.5%.
module
product_currency_price
notes
English UI, light theme, 1440px width, crop to the fields.

En el formulario del producto, elija la Divisa de precio extranjera e introduzca el Precio de venta extranjero. El Precio de venta en la divisa de la compañía se calcula entonces a partir de él con el tipo de cambio actual y el margen de la divisa, y se recalcula automáticamente cada vez que se añade, cambia o elimina un tipo de cambio para esa divisa, o se edita el margen.

screenshot: inventory-pricing-foreign-price
menu
Inventory ‣ Products ‣ Products ‣ (a product) ‣ General Information tab
shows
A product form with the "Foreign Price Currency" set to EUR, the "Foreign Sales Price" entered, and the company-currency "Sales Price" computed from it.
highlight
The "Foreign Price Currency" and "Foreign Sales Price" fields (red frame).
data
Foreign price 100.00 EUR, markup 2.5%, resulting HUF sales price computed from the current rate.
module
product_currency_price
notes
English UI, light theme, 1440px width, crop to the price fields.

Nota

Solo se puede establecer un precio en divisa extranjera por producto, y la divisa de la compañía nunca se ofrece como divisa extranjera.

Nota

Requiere el módulo de tipos de cambio en vivo de eYssen (eyssen_currency_rate_live_community) para mantener los tipos actualizados; sin tipos de cambio actuales, el precio derivado no cambia.

Pares de precios fijos

Convertir con el tipo de cambio diario no siempre es lo deseado: una tarifa acordada con un cliente a menudo asocia un precio base fijo a un precio fijo por divisa (por ejemplo, que 100 EUR sean siempre 39 900 HUF, sin importar el tipo de cambio de hoy). eyssen_pricelist_price_pair implementa exactamente eso como un nuevo cálculo Par de precios en una regla de tarifa.

Una regla configurada como Par de precios contiene una tabla de Pares de precios: cada par tiene un Precio base en la divisa de la compañía y, debajo, una línea por Divisa con el Precio que se usará en esa divisa.

Tres opciones controlan lo que ocurre cuando ningún par coincide:

  • Par ausenteUsar tipo de cambio recurre a la conversión normal, Usar cero da como resultado un precio de cero.

  • Usar par global — cuando la regla no tiene un par propio que coincida, se usa un par global (uno no vinculado a ninguna regla) con el mismo precio base y una línea en la divisa de destino.

  • Reutilizar pares de — usa la tabla de pares de otra regla en lugar de copiarla en cada regla, lo que mantiene una única tabla compartida para muchas reglas de etiqueta.

screenshot: inventory-pricing-price-pair-rule
menu
Sales ‣ Products ‣ Pricelists ‣ (a pricelist) ‣ (a rule)
shows
A pricelist rule whose "Price Computation" is "Price Pair", showing the "Missing Pair", "Use Global Pair" and "Reuse Pairs From" options and the "Price Pairs" table with one base price and its per-currency lines.
highlight
The "Price Pairs" table (red frame).
data
Base price 100.00 EUR with lines for HUF and RON.
module
eyssen_pricelist_price_pair
notes
English UI, light theme, 1440px width, full form.

Los pares también pueden cargarse de forma masiva: un asistente de importación lee un Archivo CSV o copia todas las líneas de par y divisa de una Regla de tarifa de origen, sustituyendo opcionalmente los pares ya existentes en la regla de destino.

screenshot: inventory-pricing-price-pair-import
menu
Sales ‣ Products ‣ Pricelists ‣ (a rule) ‣ (import price pairs)
shows
The "Import Price Pairs" wizard with "Mode" set to "Import from file", the File field, the target rule and the "Replace existing pairs on target" checkbox.
highlight
The "Mode" field (red frame).
data
A CSV file of base prices and per-currency prices.
module
eyssen_pricelist_price_pair
notes
English UI, light theme, 1440px width, crop to the wizard.

Importación de líneas de tarifa

eyssen_pricelist_import rellena una tarifa a partir de una hoja de cálculo. En el formulario de la tarifa, Importar líneas abre un asistente que toma un Archivo de datos (un libro de Excel cuya primera hoja indica la referencia interna del producto en la primera columna y el precio fijo en la segunda) y crea o actualiza una regla de precio fijo por producto. Eliminar líneas vacía en un solo paso la lista de reglas de la tarifa.

screenshot: inventory-pricing-pricelist-import
menu
Sales ‣ Products ‣ Pricelists ‣ (a pricelist) ‣ Import Items
shows
The "Import Items" wizard with the target pricelist and the "Data file" upload field, and the "Import Items" and "Delete Items" buttons visible on the pricelist form behind it.
highlight
The "Data file" field and the two buttons (red frames).
data
An .xlsx file with internal references and fixed prices.
module
eyssen_pricelist_import
notes
English UI, light theme, 1440px width, crop to the wizard and the buttons.

Importante

Eliminar líneas elimina todas las reglas de la tarifa sin pedir confirmación. Exporte antes la tarifa si las reglas pueden necesitarse de nuevo.

Nota

La importación de Excel necesita la librería de Python openpyxl en el entorno de Odoo.

Historial de precios

product_price_history registra todos los cambios de precio, de modo que más adelante se pueda saber qué costaba un producto en un momento dado y por qué cambió.

Cada cambio se almacena como un evento con el Tipo de precio (Precio de venta, Precio de coste o Precio de tarifa), la Tarifa a la que pertenece (para un precio de tarifa), el Precio anterior y el Precio nuevo, la Fecha efectiva en la que se aplica el nuevo precio, la fecha en que se registró, el usuario que hizo el cambio y una descripción de su causa.

Una pestaña Historial de precios en el formulario del producto enumera los eventos propios del producto, y Ventas ‣ Configuración ‣ Historial de precios abre los mismos registros con todas las opciones de búsqueda y agrupación.

screenshot: inventory-pricing-price-history
menu
Inventory ‣ Products ‣ Products ‣ (a product) ‣ Price History tab
shows
The "Price History" tab of a product form, listing the price events with their Effective Date, Price Type, Pricelist, Old Price, New Price, source description and user.
highlight
The "Old Price" and "New Price" columns (red frame).
data
Five events: two sales-price changes, one cost change and two pricelist-rule changes.
module
product_price_history
notes
English UI, light theme, 1440px width, crop to the tab.

Los eventos con fecha efectiva en el futuro se registran como previstos y se vuelven efectivos automáticamente cuando llega su fecha; dos acciones programadas realizan este trabajo, una que procesa la cola de eventos cada pocos minutos y otra que materializa los eventos previstos. Una acción puntual, Generar precios base ausentes, disponible para los administradores del sistema desde la lista Historial de precios, crea los eventos iniciales para un catálogo que ya tiene precios en el momento de instalar el módulo.

Nota

Como los eventos se registran a partir de los propios cambios de precio, el historial solo cubre lo ocurrido después de instalar el módulo, más lo que haya creado la acción de inicialización.