Saltar a contenido

Operaciones minoristas

Para quién es esta guía

Para operaciones de ventas y contabilidad del canal minorista de Reyder: equipos vendidos por socios como AnyMobile, no mediante órdenes de venta mayoristas normales.

Qué logrará: reservar equipos para un socio minorista y registrar las ventas a medida que ocurren, una por una o mediante un archivo CSV.


Retail o mayorista — qué flujo usar

Situación Flujo correcto
Un cliente B2B hace un pedido específico: “quiero estos 3 IMEI” Orden de venta
Un socio minorista mantiene inventario consignado y vende lo que tenga salida Retail Reservation + Retail Sale (esta guía)

En retail no se sabe de antemano qué IMEI venderá el socio. Primero se reserva un lote, el socio vende durante un período y después se registra cada venta en el sistema.

La reserva es obligatoria; no existe una venta retail directa

Las líneas de venta minorista solo permiten equipos con is_retail_reserved=True y cuyo socio reservado coincide con el socio del encabezado de la venta. No puede añadir un equipo sin reservarlo primero para ese socio. Para una venta aislada, cree primero una reserva breve y luego la Retail Sale.


Parte 1 — Reservas minoristas

Una reserva separa un conjunto de equipos para un socio minorista específico. Mientras está activa, esos equipos no pueden asignarse a otras órdenes.

Paso 1 — Abrir Reserve/Release Devices

Abra Device Ops → Devices → Reserve/Release Devices.

Asistente Reserve/Release Devices

Seleccione el modo apropiado:

  • Manual — elegir IMEI individualmente.
  • By manifest — incluir todo un receiving manifest.
  • By PO — incluir todo lo recibido de una purchase order.
  • By filters — filtrar por modelo, capacidad, grado y color.

Complete Retail Partner, Retail Location, Return Storage Location y Expected Return Date, la fecha en que espera recibir los equipos no vendidos. La ubicación de retorno debe pertenecer a la Holding Company. Pulse Reserve Devices.

Configure una vez el estante de retorno

Un administrador debe configurar Settings → Inventory → Retail Operations → Retail Return Storage Location para cada compañía que mantiene físicamente los equipos. Las reservas nuevas copian ese destino seguro. Si queda vacío, Odoo solo usa un destino cuando existe una única ubicación de almacenamiento inequívoca de esa compañía; si hay duda, detiene el proceso en lugar de adivinar.

Qué hace una reserva

  • Crea un registro device.retail.reservation en estado Active.
  • Marca cada equipo con el socio minorista y is_retail_reserved = True.
  • Opcionalmente mueve físicamente los equipos a la ubicación retail y crea un registro device.movement para la auditoría.

Revise las reservas activas en Device Ops → Devices → Retail Reservations.

Lista de reservas minoristas

Paso 2, más adelante — Liberar la reserva al terminar

Cuando el socio devuelve todos los equipos restantes que no vendió, abra Reserve/Release Devices, elija Release, seleccione la reserva y pulse Release Reservation. Esta acción libera toda la reserva; no hay un selector para liberar solo algunas unidades.

  • Se elimina el indicador de socio minorista de cada equipo todavía enlazado.
  • Los equipos que siguen en la ubicación retail regresan a Return Storage Location, un destino de la compañía que queda guardado al activar la reserva.

Una liberación bloqueada protege los equipos

Si Odoo indica que falta la ubicación de retorno o que es ambigua, no borre la reserva manualmente. Configure Retail Return Storage Location para la Holding Company e inténtelo otra vez. Mientras tanto, la reserva y los IMEI no cambian.

No libere una reserva por una devolución parcial

Si regresaron solamente algunos teléfonos, deténgase y pida a un gerente que divida o corrija primero el registro operativo. Release Reservation funciona todo o nada.

Cierre automático

No es necesario liberar manualmente una reserva cuando se vendió todo. Al registrar la venta del último equipo reservado, la reserva cambia automáticamente a Released.


Parte 2 — Ventas minoristas

Registre las ventas reales del socio. Cada venta cierra IMEI específicos y publica la contabilidad correspondiente.

Opción A — Registrar ventas una por una

Abra Device Ops → Devices → Retail Sales → New.

Lista de ventas minoristas

  1. Seleccione Retail Partner y Sale Date.
  2. Añada una línea por IMEI vendido; seleccione el equipo e indique su Sale Price.
  3. Pulse Confirm cuando la venta esté completa.

Por defecto, el selector limita la lista a equipos reservados para ese socio, con QC Complete y costo de compra positivo. Al confirmar, Odoo comprueba por separado que cada equipo siga Available. Un Sales Manager o Inventory Manager puede marcar Exception Override y explicar el motivo de una excepción de QC/costo; la excepción no omite el control de disponibilidad. Puede cubrir Pending QC, In QC o costo faltante/cero, pero nunca QC Failed.

Formulario de Retail Sale con Exception Override

La excepción es deliberadamente limitada. No permite vender un equipo QC Failed, sin reserva, reservado para otro socio u otra compañía, ya vendido, duplicado en las líneas o con precio de venta cero. Un equipo fallado debe repararse, probarse de nuevo y quedar en el estado QC correcto antes de poder seleccionarlo.

Opción B — Importar un CSV de ventas

Es más rápido cuando el socio envía un informe semanal.

Abra Device Ops → Devices → Import Retail Sales.

Asistente de importación de ventas minoristas

Cargue un CSV. El asistente reconoce estas columnas sin distinguir mayúsculas y busca coincidencias parciales en el encabezado; por ejemplo IMEI, imei e IMEI Number funcionan. Ignora columnas adicionales y filas vacías.

Columna Obligatoria Nota
IMEI, o un encabezado que contenga imei Debe coincidir con un equipo que ya existe en Odoo
Sale Price, o un encabezado que contenga price Precio real de venta del IMEI; debe ser un número positivo
Sale Date, o un encabezado que contenga date No Si existe, el importador usa la fecha válida más temprana de todas las filas como fecha de la venta completa; no guarda una fecha distinta por línea

Puede conservar en el archivo otras columnas del socio, como SKU o marcadores de exportación; Odoo las ignora.

El asistente crea un solo device.retail.sale en Draft y una línea por IMEI. No lo confirma automáticamente. Revise el borrador y pulse Confirm en el formulario para publicar la contabilidad.

La importación aplica las mismas reglas de reserva y precio que la entrada manual. La preparación de QC/costo se comprueba al confirmar el borrador, por lo que un gerente puede revisarlo y aplicar Exception Override antes de confirmarlo cuando corresponda.

¿El archivo mezcla ventas de varios socios?

Prepare un archivo por socio minorista. Retail Partner pertenece al encabezado, no a cada línea. Además, cada equipo debe estar reservado de antemano para ese mismo socio.

Una importación equivale a una sola fecha de venta

Si las filas tienen fechas diferentes, Odoo usa la fecha más temprana para toda la venta Draft. Separe el archivo por fecha cuando la contabilidad diaria deba conservar fechas distintas.


Qué ocurre al confirmar una Retail Sale

Al pulsar Confirm, todo ocurre dentro de una misma transacción:

  1. Cada equipo cambia a Sold. Su línea de venta retail conserva el precio indicado, y el equipo/reporte conserva la Sale Date del encabezado, no la hora posterior en que alguien pulsa Confirm.
  2. Con una configuración contable válida, se publica el asiento de COGS, débito a COGS / crédito a Valuation, por la suma de los purchase_cost distintos de cero. Una excepción de costo cero aprobada aporta cero. Si el total de costo aprobado es cero, Odoo no crea asiento COGS y Contabilidad debe revisar la excepción auditada.
  3. Se crea y publica de todos modos una factura al cliente minorista, una línea por equipo al precio de venta y sin impuesto, aunque el total COGS aprobado sea cero.
  4. Para equipos consignados de Axis, se crean y confirman los informes emparejados. La línea privada de la consignataria guarda el Retail Partner como Customer y la Sale Date del encabezado; la línea de la propietaria no guarda ninguno de esos datos. Axis recibe su factura de proveedor igual que en una venta por SO.

Después de confirmar, el formulario muestra Settlement Reports cuando corresponde. Las referencias de factura y COGS se guardan en la venta, pero actualmente no tienen botones inteligentes en el formulario. Contabilidad debe buscarlas en las listas normales de Invoices y Journal Entries usando la referencia de la Retail Sale.


Problemas comunes

El equipo que quiero vender no aparece en la lista

La línea exige que coincidan reserva, socio y Holding Company. Reserve primero el equipo para ese socio. Si está Pending QC, In QC o con costo cero, un gerente puede usar Exception Override. QC Failed nunca aparece como opción de excepción. Un IMEI desactualizado que ya no esté Available se bloquea al confirmar.

Confirm muestra un error de validación

Lea el mensaje completo. Las causas comunes son Sale Price vacío/no positivo, Retail Partner faltante, una reserva desactualizada o un IMEI que ya no está Available.

Confirm indica que el equipo no está listo para vender

Si está Pending QC, In QC o con costo vacío/cero, complete el trabajo o pida a un Sales Manager/Inventory Manager que marque Exception Override y escriba el motivo. El chatter conserva la auditoría. QC Failed es un bloqueo absoluto: repare y pruebe otra vez el equipo o seleccione otro IMEI; no existe excepción.

La importación CSV rechaza el archivo

Odoo normaliza los encabezados: minúsculas y espacios convertidos en guiones bajos; luego busca imei, price y opcionalmente date. Por eso funcionan IMEI Number, Device IMEI, Unit Price y variantes. Las fechas mezcladas se convierten en la fecha más temprana del encabezado. El asistente exige:

  • una columna cuyo nombre contenga imei y otra que contenga price;
  • que cada IMEI ya exista como stock.lot; el importador no recibe equipos nuevos;
  • que cada IMEI esté reservado para el Retail Partner del encabezado;
  • un precio de venta que pueda convertirse en número positivo.

Si una fila falla, el mensaje incluye su número para que corrija solamente esa fila.

Se confirmó la venta, pero no apareció un informe de liquidación

Los informes se generan únicamente para equipos consignados, cuando la compañía propietaria es distinta de la vendedora. Si Reyder era la propietaria, no corresponde liquidación. Revise owner_company_id en cada equipo.

La factura se publicó en el diario equivocado

Las facturas retail usan el primer diario de ventas configurado para la compañía de la Retail Sale. Este flujo no tiene un selector de diario por cliente. Pida a contabilidad que corrija la configuración de diarios antes de confirmar más ventas; no edite ni vuelva a publicar la factura sin un proceso aprobado.


Revisado el 22-07-2026 · Device Inventory 19.0.2.57.0 · Use la etiqueta exacta de pantalla que aparece en negrita.