Salidas de Compras¶
La sección Salidas de Compras registra los movimientos de salida de inventario generados por devoluciones a proveedores, documentando la entrega de mercancías que deben ser retornadas y que saldrán del stock disponible. Su objetivo es mantener la integridad del inventario al procesar devoluciones a proveedores, reduciendo automáticamente el stock físico y disponible, y registrando la trazabilidad completa del producto devuelto. Almacena información del movimiento (referencia, fecha), factura de compra rectificativa origen, concepto comprado original, producto y cantidad a devolver, lote específico del que sale (especialmente importante para devoluciones, utilizando algoritmos para identificar lotes de la compra original), almacén de origen, medida utilizada, proveedor receptor, empleado responsable, tipo y estado del movimiento. El módulo incluye validaciones para garantizar coherencia entre producto y lote, correcta ubicación, suficiente stock físico, y utiliza algoritmos especiales para seleccionar los lotes correctos en compras rectificativas. Se integra automáticamente con Compras/Gastos (facturas rectificativas) e Inventario.
Información General¶
| Propiedad | Valor |
|---|---|
| ID | 377ed111-4619-4c2e-b3ae-a959d6a71d89 |
| Tabla PostgreSQL | tpr_60040105745 |
| Etiqueta Plural | Salidas de compra |
| Texto principal automatico | Sí |
| Sección Base | Base - Salidas de Compras (74b5c154-eccf-4806-9347-7935fa6ecbcf) |
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 Compras | - |
| 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_10040106055 |
🔒 Bloqueado, 👁 Oculto | Autorrellenado (Siempre): Campo : Producto / Medida (Base) |
| Cantidad (Unidades) | Decimal |
General | pr_10040106058 |
🔒 Bloqueado, 👁 Oculto, 📊 Cualquier valor numérico | - |
| Referencia Ticket | Entero |
General | pr_6004010574176 |
👁 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_6004010574169 |
🔒 Bloqueado, 👁 Oculto | - |
| Observaciones y anotaciones | Texto |
General | pr_6004010574178 |
- | - |
| Texto Ticket | Texto |
General | pr_6004010574177 |
👁 Oculto | - |
| Cantidad (Medida Base) | Decimal |
General | pr_10040106054 |
🔒 Bloqueado, 👁 Oculto, 📊 Cualquier valor numérico | - |
| Cantidad (Medida Base Por Und.) | Decimal |
General | pr_10040106057 |
🔒 Bloqueado, 👁 Oculto, 📊 Cualquier valor numérico | Autorrellenado (Siempre): Campo : Producto / Cantidad (Medida Base) |
| Tipo de movimiento | Relación |
General | pr_6004010574172 |
🔒 Bloqueado, 👁 Oculto | Autorrellenado (Siempre): Campo (Empresa Actual): Tipo predeterminado de salida de compra |
| Destinador | Relación |
General | pr_6004010574122 |
🔒 Bloqueado, 👁 Oculto | - |
| Hora local | Hora |
Registro | pr_6004010574117 |
🔒 Bloqueado, 👁 Oculto | - |
| Concepto | Relación |
General | pr_20040242022 |
🔒 Bloqueado | - |
| Fecha Dato | Fecha Y Hora |
General | pr_6004010574116 |
🔴 Obligatorio | Autorrellenado (Siempre): Fecha y Hora actual |
| Autor del alta | Relación |
Registro | pr_6004010574115 |
🔴 Obligatorio | Autorrellenado (Siempre): Campo (Sesión): La Entidad ( ID* ) |
| Fecha Alta del registro | Fecha Y Hora |
Registro | pr_6004010574119 |
🔴 Obligatorio | Autorrellenado (Siempre): Fecha y Hora actual |
| Producto | Relación |
General | pr_10040106053 |
🔴 Obligatorio | - |
| Cantidad | Decimal |
General | pr_10040106056 |
🔴 Obligatorio, 📊 Mayores que 0 | - |
| Puesto de trabajo | Relación |
Registro | pr_6004010574173 |
👁 Oculto | Autorrellenado (Siempre): Campo (Sesión): Puesto de trabajo |
| Ubicación Principal | Relación |
Registro | pr_6004010574114 |
👁 Oculto | Autorrellenado (Siempre): Campo (Sesión): Ubicación Principal |
| Compra | Relación |
General | pr_20040242021 |
🔒 Bloqueado | - |
| Estado | Relación |
General | pr_60692086 |
🔴 Obligatorio, 🔒 Bloqueado | Autorrellenado (Siempre): Referencia dato: Completada |
| Tipo | Relación |
General | pr_60692087 |
- | Autorrellenado (Siempre): Referencia dato: Devolución a proveedor |
| Medida | Relación |
General | pr_10040106059 |
🔴 Obligatorio | Autorrellenado (Siempre): Campo : Producto / Medida (Accesible) |
| Empleado | Relación |
Registro | pr_6004010574113 |
🔴 Obligatorio | Autorrellenado (Siempre): Campo (Sesión): La Entidad ( ID* ) |
| Proveedor | Relación |
General | pr_6004010574171 |
🔒 Bloqueado | Autorrellenado (Siempre): Campo : Compra / Proveedor · Entidad relacionada la transacción. |
| Lote | Relación |
General | pr_100401060510 |
🔴 Obligatorio | Autorrellenado (Siempre): Campo : Producto / Lote por defecto producto |
| Numeración / Serie | Relación |
Registro | pr_6004010574174 |
- | - |
| Almacén | Relación |
General | pr_30692061002 |
🔒 Bloqueado | Autorrellenado (Siempre): Campo : Lote / Almacén |
Scripts¶
Total de scripts: 4
Código de Scripts¶
Lógica de negocio ejecutada en los formularios automáticamente
Formulario_Iniciado_AgregarNuevo_PostRellenadoImportacion¶
if C.ReferenciaDestinador = S.Destinadores.ComprasGastos.SalidaDeCompra.ID
if C.ReferenciaCompra <> ''
C.ReferenciaProveedor = C.ReferenciaCompra.ReferenciaProveedor
C.ReferenciaUbicacionPrincipal = F.GetRowById(S.Sections.Ubicaciones.ID,C.ReferenciaCompra.ReferenciaUbicacionPrincipal)
C.ReferenciaProducto = C.ReferenciaConcepto.ReferenciaProducto
end if
end if
Campo_ComboAplicarFiltro¶
if C.ReferenciaProducto = ''
F.CampoDesplegableCancelar('Debe seleccionar un producto.')
else
F.CampoDesplegableAplicarAlgoritmoCM(S.Algorithms.AlgoritmoLotesUsadosEnComprasRectificativas.ID,C.ReferenciaCompra.ReferenciaCompraARectificar,C.ReferenciaProducto)
End If
Campos utilizados:
- Salidas de Compras > 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 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 compra]
@ Hace referencia a una compra rectificativa (Devolución de producto comprado)
num Unidades = C.CantidadUnidades
C.ReferenciaMovimientoInterno.ReferenciaLote = C.ReferenciaLote
C.ReferenciaMovimientoInterno.ReferenciaProducto = C.ReferenciaProducto
C.ReferenciaMovimientoInterno.ReferenciaEntidadRelacionada = C.ReferenciaProveedor
C.ReferenciaMovimientoInterno.ModificadorStockInventario = V.Unidades * -1
C.ReferenciaMovimientoInterno.ModificadorStockDisponible = V.Unidades * -1
@ ____ STOCK FÍSICO ____
@ Producto
txt Producto = S.Fields.SalidasDeCompras.ReferenciaProducto.ID
txt ProductoStockFisico = S.Fields.ProductosBase.StockEnInventario.ID
txt CantidadSalida = S.Fields.SalidasDeCompras.CantidadUnidades.ID
F.CampoLimitacionCantidadIndirecta(v.Producto,v.ProductoStockFisico,0,0,v.CantidadSalida,0,'Stock Inventario',1)
@ Lote
txt Producto2 = S.Fields.SalidasDeCompras.ReferenciaLote.ID
txt ProductoStockFisico2 = S.Fields.LotesDeProductosBase.StockInventario.ID
txt CantidadSalida2 = S.Fields.SalidasDeCompras.CantidadUnidades.ID
F.CampoLimitacionCantidadIndirecta(v.Producto2,v.ProductoStockFisico2,0,0,v.CantidadSalida2,0,'Stock Inventario de lote',1)