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 | Sí |
| 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)