Saltar a contenido

Salidas de ventas

La sección Salidas de ventas registra los movimientos de salida de inventario que se generan automáticamente cuando se confirma una venta de productos que gestionan stock. Su objetivo es mantener actualizado el inventario, reduciendo el stock disponible conforme se realizan las ventas. Almacena información detallada del movimiento incluyendo referencia, fecha, venta origen asociada, concepto vendido, producto y cantidad salida, lote específico del que sale el producto, medida utilizada, almacén de origen, cliente receptor, empleado responsable, tipo de movimiento y estado de la salida. El módulo incluye validaciones para garantizar que el producto y lote coincidan, que el lote pertenezca a la misma ubicación de la salida, y que haya suficiente stock físico disponible tanto a nivel de producto como de lote específico. Se integra automáticamente con el módulo de Ventas/Ingresos, actualizando el stock en inventario y el stock disponible en tiempo real, proporcionando trazabilidad completa de cada producto vendido.

Información General

Propiedad Valor
ID 2c7d5f11-1b45-4f3a-85fa-7aefa0699cfa
Tabla PostgreSQL tpr_40040105741
Etiqueta Plural Salidas de venta
Texto principal automatico
Sección Base Base - Salidas de ventas (2) (62fa537d-c5c9-444c-94d8-53f603b00529)

Campos

Total de campos: 38 (10 del sistema, 28 personalizados)

Campos del Sistema

Campo Tipo Rol Columna PostgreSQL Relación Atributos
ID Relación - id Salidas de ventas -
Referencia Texto - nombre - -
Fecha Alta Dato Fecha Y Hora - fecha - -
Editado Fecha Y Hora - fecham - -
Eliminado Sí/No - eliminado - -
Usuario Creador del dato Relación - usuarioid Base - Entidades -
Sección (Relación Sistema) Relación - plantillapid - 🔴 Obligatorio
Posición (Orden) Decimal - posicion - -
Modificado Sí/No - modificado - -
Fecha Indice Actividad Fecha Y Hora - fechaia - -

Campos Personalizados

Campo Tipo Pestaña Columna Atributos Notas
Medida (Base) Relación General pr_100401060512 🔒 Bloqueado, 👁 Oculto Autorrellenado (Siempre): Campo : Producto / Medida (Base)
Producto Relación General pr_100401060511 🔴 Obligatorio -
Cantidad (Medida Base) Decimal General pr_100401060516 🔒 Bloqueado, 👁 Oculto, 📊 Cualquier valor numérico -
Tipo de movimiento Relación General pr_400401057433 🔒 Bloqueado, 👁 Oculto Autorrellenado (Siempre): Campo (Empresa Actual): Tipo predeterminado de salidas de venta
Cantidad (Unidades) Decimal General pr_100401057612 👁 Oculto, 📊 Cualquier valor numérico -
Texto Ticket Texto General pr_400401057439 👁 Oculto -
Referencia Ticket Entero General pr_400401057437 👁 Oculto, 📊 Cualquier valor numérico Es el número secuencial que el sistema emite cada vez que se realiza una transacción.
Cantidad (Medida Base Por Und.) Decimal General pr_100401060515 🔒 Bloqueado, 👁 Oculto, 📊 Cualquier valor numérico Autorrellenado (Siempre): Campo : Producto / Cantidad (Medida Base)
Hora local Hora Registro pr_400401057415 🔒 Bloqueado, 👁 Oculto -
Movimiento interno Relación General pr_400401057435 🔒 Bloqueado, 👁 Oculto -
Destinador Relación General pr_400401057420 🔒 Bloqueado, 👁 Oculto -
Venta Relación General pr_10040105769 🔒 Bloqueado -
Concepto vendido Relación General pr_100401057610 🔒 Bloqueado -
Autor del alta Relación Registro pr_400401057413 🔴 Obligatorio Autorrellenado (Siempre): Campo (Sesión): La Entidad ( ID* )
Cliente Relación General pr_400401057432 🔒 Bloqueado Autorrellenado (Siempre): Campo : Venta / Cliente · Entidad relacionada la transacción.
Observaciones y anotaciones Texto General pr_400401057438 - -
Numeración / Serie Relación Registro pr_400401057430 - -
Fecha Alta del registro Fecha Y Hora Registro pr_400401057417 🔴 Obligatorio Autorrellenado (Siempre): Fecha y Hora actual
Puesto de trabajo Relación Registro pr_400401057434 👁 Oculto Autorrellenado (Siempre): Campo (Sesión): Puesto de trabajo
Empleado Relación Registro pr_400401057411 🔴 Obligatorio Autorrellenado (Siempre): Campo (Sesión): La Entidad ( ID* )
Ubicación Principal Relación Registro pr_400401057412 👁 Oculto Autorrellenado (Siempre): Campo (Sesión): Ubicación Principal
Tipo Relación General pr_60692085 - Autorrellenado (Siempre): Referencia dato: Venta a cliente
Lote Relación General pr_100401060517 🔴 Obligatorio Autorrellenado (Siempre): Campo : Producto / Lote por defecto producto
Medida Relación General pr_100401060513 🔴 Obligatorio Autorrellenado (Siempre): Campo : Producto / Medida (Accesible)
Fecha Dato Fecha Y Hora General pr_400401057414 🔴 Obligatorio Autorrellenado (Siempre): Fecha y Hora actual
Cantidad Decimal General pr_100401060514 🔴 Obligatorio, 📊 Mayores que 0 -
Almacén Relación General pr_10692071 🔒 Bloqueado Autorrellenado (Siempre): Campo : Lote / Almacén
Estado Relación General pr_20692091003 🔴 Obligatorio, 🔒 Bloqueado Autorrellenado (Siempre): Referencia dato: Completada

Scripts

Total de scripts: 5

Código de Scripts

Lógica de negocio ejecutada en los formularios automáticamente

Formulario_Iniciado_AgregarNuevo_PostRellenadoImportacion

if C.ReferenciaDestinador = S.Destinadores.VentasIngresos.SalidaDeVenta.ID 
    if C.ReferenciaVenta <> ''
        if C.ReferenciaConceptoVendido <> ''


            C.ReferenciaProducto = C.ReferenciaConceptoVendido.ReferenciaProducto 
            C.ReferenciaLote = C.ReferenciaConceptoVendido.ReferenciaLote 

        end if



        C.ReferenciaUbicacionPrincipal  = F.GetRowById(S.Sections.Ubicaciones.ID,C.ReferenciaVenta.ReferenciaUbicacionPrincipal)

        C.ReferenciaCliente = C.ReferenciaVenta.ReferenciaCliente 

    end if
end if

Campo_ComboAplicarFiltro

if C.ReferenciaProducto = ''

    F.CampoDesplegableCancelar('Debe seleccionar un producto.')
else
    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.ReferenciaProducto.ID,'=',C.ReferenciaProducto)
    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.ReferenciaUbicacionPrincipal.ID,'=',C.ReferenciaUbicacionPrincipal)

End If

Campos utilizados: - Salidas de ventas > Lote

Campo_ComboAplicarFiltro

F.CampoDesplegableAplicarFiltro(S.Fields.ProductosBase.EvaluarStock.ID,'=',1)

Campos utilizados: - Salidas de ventas > Producto

Formulario_PreACeptar

if C.ReferenciaLote.ReferenciaUbicacionPrincipal <> C.ReferenciaUbicacionPrincipal 
    F.MsgBox('El lote no puede pertenecer a una ubicación distinta a la de la salida.',1)
    F.CancelarEvento 
End If


if C.ReferenciaLote.ReferenciaProducto <> C.ReferenciaProducto 
    F.MsgBox('El producto de la Salida y el del lote debe ser el mismo.',1)
    F.CancelarEvento 
End If

Formulario_TickRecalculo

@ [Salida de Venta] 
@  Salida de una venta Ordinaria. 
@  La disponibilidad la gestiona la propia venta
num Unidades = C.CantidadUnidades 
C.ReferenciaMovimientoInterno.ReferenciaLote = C.ReferenciaLote 
C.ReferenciaMovimientoInterno.ReferenciaProducto = C.ReferenciaProducto
C.ReferenciaMovimientoInterno.ReferenciaEntidadRelacionada = C.ReferenciaCliente 
C.ReferenciaMovimientoInterno.ModificadorStockInventario = V.Unidades * -1
C.ReferenciaMovimientoInterno.ModificadorStockDisponible = 0 


@ ____   STOCK FÍSICO   ____ 

@ Producto 
txt Producto = S.Fields.SalidasDeVentas.ReferenciaProducto.ID 
txt ProductoStockFisico = S.Fields.ProductosBase.StockEnInventario.ID 
txt CantidadSalida = S.Fields.SalidasDeVentas.CantidadUnidades.ID 
F.CampoLimitacionCantidadIndirecta(v.Producto,v.ProductoStockFisico,0,0,v.CantidadSalida,0,'Stock Inventario',1)

@ Lote 
txt Producto2 = S.Fields.SalidasDeVentas.ReferenciaLote.ID 
txt ProductoStockFisico2 = S.Fields.LotesDeProductosBase.StockInventario.ID 
txt CantidadSalida2 = S.Fields.SalidasDeVentas.CantidadUnidades.ID 
F.CampoLimitacionCantidadIndirecta(v.Producto2,v.ProductoStockFisico2,0,0,v.CantidadSalida2,0,'Stock Inventario de lote',1)

← Volver al índice