Configuración de Campos Personalizados
Descripción General
Sección titulada «Descripción General»Los Campos Personalizados permiten extender los modelos de datos estándar en EZY WMS mediante la asignación de columnas de bases de datos SAP y expresiones SQL calculadas a identificadores de campo. Estos campos están disponibles para mostrar y usar en diferentes módulos.
Ubicación del archivo de configuración:
ezy-wms-backend/Service/config/CustomFields.yamlEstructura
Sección titulada «Estructura»La sección CustomFields es un diccionario indexado por nombre de colección. Cada colección contiene un array de definiciones de campos personalizados:
CustomFields: Items: - Key: FieldId Description: Etiqueta de Pantalla Type: Text Query: EXPRESION_SQL GroupBy: EXPRESION_GRUPO_SQL # opcional PickingDetails: # ...Propiedades de CustomField
Sección titulada «Propiedades de CustomField»| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
Key | string | Sí | Identificador único del campo dentro de la colección. |
Description | string | Sí | Etiqueta legible mostrada en la interfaz de usuario. |
Type | enum | Sí | Tipo de dato: Text (0), Number (1) o Date (2). |
Query | string | Sí | Expresión SQL sin procesar que recupera el valor del campo. Se ignora en la serialización JSON. |
GroupBy | string | No | Expresión SQL de agrupación utilizada en consultas agregadas. Se ignora en la serialización JSON. |
Notas Importantes
Sección titulada «Notas Importantes»- Fragmentos SQL:
QueryyGroupByson fragmentos SQL sin procesar incrustados en consultas más grandes por el servicio. Deben ser válidos para el tipo de base de datos SAP que utilice (SQL Server, etc.). - Serialización JSON: Las propiedades
QueryyGroupByestán marcadas con[JsonIgnore]y no se envían a los clientes. - Unicidad: Cada
Keydebe ser único dentro de su colección.
Ejemplos
Sección titulada «Ejemplos»Colección Items
Sección titulada «Colección Items»Define campos personalizados para operaciones relacionadas con artículos:
CustomFields: Items: - Key: FrgnName Description: Nombre Secundario Type: Text Query: OITM.FrgnName
- Key: ItmsGrpNam Description: Grupo de Artículos Type: Text Query: (SELECT [ItmsGrpNam] FROM OITB WHERE ItmsGrpCod = OITM.ItmsGrpCod) GroupBy: OITM.ItmsGrpCod
- Key: UpdateDate Description: Fecha de Actualización Type: Date Query: OITM.UpdateDateColección PickingDetails
Sección titulada «Colección PickingDetails»Incluye un campo con agrupación SQL para operaciones agregadas:
CustomFields: PickingDetails: - Key: Marca Description: Marca Type: Text Query: COALESCE(ORDR.U_MARCA, OINV.U_MARCA, OWTQ.U_MARCA) GroupBy: ORDR.U_MARCA, OINV.U_MARCA, OWTQ.U_MARCAColecciones Adicionales (Opcional)
Sección titulada «Colecciones Adicionales (Opcional)»Puedes extender campos personalizados a otras colecciones. Descomenta y personaliza según sea necesario:
CustomFields: # Warehouses: # - Key: WarehouseCode # Description: Código de Almacén # Type: Text # Query: OWHS.WhsCode # # Vendors: # - Key: VendorCode # Description: Código de Proveedor # Type: Text # Query: OCRD.CardCodeEjemplo Completo
Sección titulada «Ejemplo Completo»A continuación se muestra una configuración completa y anotada de CustomFields.yaml:
# Configuración de Campos Personalizados# Define campos personalizados que se pueden mostrar y usar en diferentes módulos# Se asigna a Dictionary<string, CustomField[]> en Settings.CustomFields
CustomFields: # Campos personalizados de Items - Campos disponibles para operaciones relacionadas con artículos Items: # Nombre Secundario - una referencia de columna simple - Key: FrgnName Description: Nombre Secundario Type: Text Query: OITM.FrgnName # GroupBy es opcional; omitido aquí ya que no se necesita agregación
# Grupo de Artículos - utiliza una subconsulta y agrupación para resultados agregados - Key: ItmsGrpNam Description: Grupo de Artículos Type: Text Query: (SELECT [ItmsGrpNam] FROM OITB WHERE ItmsGrpCod = OITM.ItmsGrpCod) GroupBy: OITM.ItmsGrpCod
# Nombre de Firma - otra subconsulta con agrupación - Key: FirmName Description: Nombre de Firma Type: Text Query: (SELECT [FirmName] FROM OMRC WHERE FirmCode = OITM.FirmCode) GroupBy: OITM.FirmCode
# Campo numérico - identificador de entrada de artículo - Key: DocEntry Description: Entrada de Artículo Type: Number Query: OITM.DocEntry
# Campo de fecha - marca de tiempo de última actualización - Key: UpdateDate Description: Fecha de Actualización Type: Date Query: OITM.UpdateDate
# Volumen en metros cúbicos - Key: Volume Description: Volumen (m³) Type: Number Query: OITM.BVolume
# Peso en kilogramos - Key: Weight Description: Peso (kg) Type: Number Query: OITM.BVolume
# Factor de compra - Key: Factor Description: Factor Type: Number Query: OITM.PurFactor1
# Campos personalizados de PickingDetails PickingDetails: # Campo Marca con lógica de fallback COALESCE y agrupación - Key: Marca Description: Marca Type: Text Query: COALESCE(ORDR.U_MARCA, OINV.U_MARCA, OWTQ.U_MARCA) GroupBy: ORDR.U_MARCA, OINV.U_MARCA, OWTQ.U_MARCA
# Descomenta para agregar campos personalizados para Almacenes # Warehouses: # - Key: WarehouseCode # Description: Código de Almacén # Type: Text # Query: OWHS.WhsCode # # - Key: WarehouseName # Description: Nombre de Almacén # Type: Text # Query: OWHS.WhsName
# Descomenta para agregar campos personalizados para Proveedores # Vendors: # - Key: VendorCode # Description: Código de Proveedor # Type: Text # Query: OCRD.CardCode # # - Key: VendorName # Description: Nombre de Proveedor # Type: Text # Query: OCRD.CardName # # - Key: CreditLimit # Description: Límite de Crédito # Type: Number # Query: OCRD.CreditLineValidación
Sección titulada «Validación»- Asegúrate de que todos los valores de
Keysean únicos dentro de cada colección. - Verifica que las expresiones SQL en
QueryyGroupBysean válidas para tu base de datos. - Confirma que las tablas y columnas referenciadas existan en tu esquema de base de datos SAP.