Saltar a contenido

Entradas de Compra

La sección Entradas de Compra registra los movimientos de entrada de inventario generados automáticamente al confirmar facturas de compra de productos que gestionan stock. Su objetivo es mantener la trazabilidad de las entradas vinculadas a compras, actualizando automáticamente el stock disponible y registrando el coste de adquisición para el cálculo del precio medio de compra. Almacena información del movimiento (referencia, fecha), factura de compra origen, producto y cantidad recibida, almacén destino, hueco de almacenamiento opcional, lote asignado o creado, coste unitario de entrada, proveedor, empleado responsable, tipo de movimiento y estado de la recepción. El módulo incluye validaciones para garantizar que el producto y lote coincidan, que el lote pertenezca a la ubicación correcta, y scripts para facilitar la creación o selección de lotes. Se integra automáticamente con Compras/Gastos (genera entrada al confirmar), Inventario (actualización de stock físico y disponible), Almacenes y Valoración de existencias.

Información General

Propiedad Valor
ID 3b8b467f-2f7a-439d-8c4c-cdc732ad02fd
Tabla PostgreSQL tpr_60040105742
Etiqueta Plural Entradas de compra
Texto principal automatico
Sección Base Base - Entradas de Compra (2) (fabd54cc-c555-4578-829d-a4194ebc9d32)

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 Entradas de Compra -
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
Cantidad (Medida Base Por Und.) Decimal General pr_20040106031 🔒 Bloqueado, 👁 Oculto, 📊 Cualquier valor numérico Autorrellenado (Siempre): Campo : Producto / Cantidad (Medida Base)
Cantidad (Unidades) Decimal General pr_20040106036 👁 Oculto, 📊 Cualquier valor numérico -
Referencia Ticket Entero General pr_6004010574150 👁 Oculto, 📊 Cualquier valor numérico Es el número secuencial que el sistema emite cada vez que se realiza una transacción.
Movimiento interno Relación General pr_6004010574142 🔒 Bloqueado, 👁 Oculto -
Destinador Relación General pr_600401057451 🔒 Bloqueado, 👁 Oculto -
Hora local Hora Registro pr_600401057446 🔒 Bloqueado, 👁 Oculto -
Texto Ticket Texto General pr_6004010574149 👁 Oculto -
Observaciones y anotaciones Texto General pr_6004010574148 - -
Medida (Base) Relación General pr_20040106034 👁 Oculto Autorrellenado (Siempre): Campo : Producto / Medida (Base)
Tipo de movimiento Relación General pr_6004010574146 🔒 Bloqueado, 👁 Oculto Autorrellenado (Siempre): Campo (Empresa Actual): Tipo predeterminado de entrada de compra
Cantidad (Medida Base) Decimal General pr_20040106037 🔒 Bloqueado, 👁 Oculto, 📊 Cualquier valor numérico -
Ubicación Principal Relación Registro pr_600401057443 👁 Oculto Autorrellenado (Siempre): Campo (Sesión): Ubicación Principal
Puesto de trabajo Relación Registro pr_6004010574145 👁 Oculto Autorrellenado (Siempre): Campo (Sesión): Puesto de trabajo
Elemento de compra Relación General pr_60040105752 🔒 Bloqueado -
Empleado Relación Registro pr_600401057442 🔴 Obligatorio Autorrellenado (Siempre): Campo (Sesión): La Entidad ( ID* )
Compra Relación General pr_60040105751 🔒 Bloqueado -
Almacén Relación General pr_30692061001 🔒 Bloqueado Autorrellenado (Siempre): Campo : Lote / Almacén
Autor del alta Relación Registro pr_600401057444 🔴 Obligatorio Autorrellenado (Siempre): Campo (Sesión): La Entidad ( ID* )
Lote Relación General pr_100401060518 🔴 Obligatorio Autorrellenado (Siempre): Campo : Producto / Lote por defecto producto
Proveedor Relación General pr_6004010574141 🔒 Bloqueado Autorrellenado (Siempre): Campo : Compra / Proveedor
Cantidad Decimal General pr_20040106035 📊 Mayores que 0 -
Producto Relación General pr_20040106033 🔴 Obligatorio, 🔒 Bloqueado -
Medida Relación General pr_20040106032 🔴 Obligatorio Autorrellenado (Siempre): Campo : Producto / Medida (Accesible)
Fecha Alta del registro Fecha Y Hora Registro pr_600401057448 🔴 Obligatorio Autorrellenado (Siempre): Fecha y Hora actual
Numeración / Serie Relación Registro pr_6004010574144 - -
Fecha Dato Fecha Y Hora General pr_600401057445 🔴 Obligatorio Autorrellenado (Siempre): Fecha y Hora actual
Estado Relación General pr_60692082 🔴 Obligatorio, 🔒 Bloqueado Autorrellenado (Siempre): Referencia dato: Completada
Tipo Relación General pr_60692081 🔴 Obligatorio Autorrellenado (Siempre): Referencia dato: Compra a proveedor

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.ComprasGastos.EntradasDeCompraGasto.ID 
    if C.ReferenciaCompra <> ''


        C.ReferenciaProveedor = C.ReferenciaCompra.ReferenciaProveedor 
        C.ReferenciaUbicacionPrincipal = F.GetRowById(S.Sections.Ubicaciones.ID,C.ReferenciaCompra.ReferenciaUbicacionPrincipal)
        C.ReferenciaProducto = C.ReferenciaElementoDeCompra.ReferenciaProducto 




    end if 
end if

Campo_PreAgregarRelacion

F.CopiarAgregarRelacion(S.Fields.LotesDeProductosBase.ReferenciaElementoCompraOrigen.ID,C.ReferenciaElementoDeCompra)
F.CopiarAgregarRelacion(S.Fields.LotesDeProductosBase.ReferenciaCompraDeOrigen.ID,C.ReferenciaCompra)
F.CopiarAgregarRelacion(S.Fields.LotesDeProductosBase.ReferenciaProducto.ID,C.ReferenciaProducto)
F.CopiarAgregarRelacion(S.Fields.LotesDeProductosBase.ImporteCostePorUnidadSinImpuestos.ID,C.ReferenciaElementoDeCompra.ImportePrecioUnidad)
F.CopiarAgregarRelacion(S.Fields.LotesDeProductosBase.Seccion.ID,S.Sections.LotesDeCompra.id)

Campos utilizados: - Entradas de Compra > Lote

Formulario_PreACeptar

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

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

Campo_ComboAplicarFiltro

if C.ReferenciaProducto = ''

    F.CampoDesplegableCancelar('Debe seleccionar un producto.')
else


    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.Seccion.ID,'=',S.Sections.LotesDeProductos.id)
    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.ReferenciaProducto.ID,'=',C.ReferenciaProducto)


    F.CampoDesplegableAplicarAlternativa()  
    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.ReferenciaProducto.ID,'=',C.ReferenciaProducto)
    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.ReferenciaElementoCompraOrigen.ID,'=',C.ReferenciaElementoDeCompra)
    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.ReferenciaUbicacionPrincipal.ID,'=',C.ReferenciaUbicacionPrincipal)
    F.CampoDesplegableAplicarFiltro(S.Fields.LotesDeProductosBase.Seccion.ID,'=',S.Sections.LotesDeCompra.id)



End If

Campos utilizados: - Entradas de Compra > Lote

Formulario_TickRecalculo

@ [Entrada de Compra]
@   La entrada en compras hace referencia a una compra ordinaria
@   Se disminuye el stock en trámite, se aumenta el stock físico y el disponible 
num Unidades = C.CantidadUnidades
C.ReferenciaMovimientoInterno.ReferenciaLote = C.ReferenciaLote 
C.ReferenciaMovimientoInterno.ReferenciaProducto = C.ReferenciaProducto 
C.ReferenciaMovimientoInterno.ReferenciaEntidadRelacionada = C.ReferenciaProveedor 
C.ReferenciaMovimientoInterno.ModificadorStockInventario = V.Unidades
C.ReferenciaMovimientoInterno.ModificadorStockDisponible = V.Unidades




@ ____   STOCK FÍSICO   ____ 

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

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


@ ____   STOCK DISPONIBLE   ____ 
@ Lote 
txt Producto3 = S.Fields.EntradasDeCompra.ReferenciaLote.ID 
txt CantidadSalida3 = S.Fields.EntradasDeCompra.CantidadUnidades.ID 
txt ProductoStockFisico3 = S.Fields.LotesDeProductosBase.StockDisponible.ID 
F.CampoLimitacionCantidadIndirecta(v.Producto3,v.ProductoStockFisico3,0,0,v.CantidadSalida3,1,'Stock Disponible de lote',2)
@ Producto 
txt Producto4 = S.Fields.EntradasDeCompra.ReferenciaProducto.ID 
txt ProductoStockFisico4 = S.Fields.ProductosBase.StockDisponible.ID 
txt CantidadSalida4 = S.Fields.EntradasDeCompra.CantidadUnidades.ID 
F.CampoLimitacionCantidadIndirecta(v.Producto4,v.ProductoStockFisico4,0,0,v.CantidadSalida,1,'Stock Disponible',2)

← Volver al índice