mv_cat_oracle_clientes
1. Descripción
La vista general_catalogs.mv_cat_oracle_clientes proporciona un catálogo consolidado de clientes provenientes de las fuentes de información de Oracle:
- Oracle Accounts Receivable (AR).
- Customer Data Management (CDM).
La vista integra información relacionada con:
- Identificación del cliente.
- Datos fiscales.
- Cuenta de cliente.
- Clasificación comercial.
- Canales y subcanales.
- Grupos comerciales.
- Información de cobranza.
- Datos de facturación.
- Sitios y direcciones.
- Información logística.
- Segmentación.
- Información bancaria.
- Configuración de EDI.
- Datos de distribución.
- Información de AS400.
La información proveniente de AR tiene prioridad. Los registros de CDM únicamente se incorporan cuando no existe un registro con el mismo party_id en alp_cat_ar_clientes.
1. Origen de los datos
| Objeto | Descripción |
|---|---|
general_catalogs.alp_cat_ar_clientes | Catálogo de clientes provenientes de Oracle Accounts Receivable (AR). |
general_catalogs.alp_cat_cdm_clientes | Catálogo de clientes provenientes de Customer Data Management (CDM). |
2. Lógica de consolidación
La vista utiliza dos fuentes de información:
alp_cat_ar_clientes
│
│
│ Prioridad 1
▼
Clientes AR
│
│
├──────────────┐
│ │
▼ │
UNION ALL │
▲ │
│ │
Clientes CDM │
│ │
│ │
Solo si party_id no existe │
en clientes AR │
│ │
▼ │
Datos consolidados
│
▼
mv_cat_oracle_clientes
2.1. Regla de prioridad
La vista aplica la siguiente regla:
| Prioridad | Fuente | Regla |
|---|---|---|
| 1 | AR | Se incluyen todos los registros. |
| 2 | CDM | Se incluyen únicamente registros cuyo party_id no exista en AR. |
La validación se realiza mediante:
WHERE NOT EXISTS (
SELECT 1
FROM alp_cat_ar_clientes ar
WHERE ar.party_id = cdm.party_id
)
Por lo tanto, si un cliente existe en ambas fuentes:
AR ──► Se conserva
CDM ──► Se excluye
3. Normalización de datos
La vista realiza conversiones de datos para estandarizar la información proveniente de ambas fuentes.
Conversión de cadenas vacías a NULL
Para ciertos campos provenientes de CDM se utiliza:
NULLIF(TRIM(campo), '')
Esto permite convertir:
' ' → NULL
'' → NULL
'123' → 123
Posteriormente algunos valores se convierten a:
DOUBLE PRECISION
3.1. Campos normalizados
Entre los campos que reciben esta transformación se encuentran:
cust_account_idaccount_osr_idparty_site_idparty_site_osr_idlocation_osr_idcust_acct_site_idaccount_site_osr_idparty_site_use_idparty_site_use_osr_idsite_use_idaccount_site_use_osr_idcuenta_bancariaguid_chep
La lógica utilizada es:
NULLIF(TRIM(campo), '')::double precision
4. Estructura de la vista
4.1. Identificación del cliente
| Campo | Descripción |
|---|---|
appl_source | Fuente de origen de la información. |
party_id | Identificador único de la entidad o cliente. |
identificador_registro | Identificador del registro del cliente. |
nombre | Nombre del cliente o entidad. |
tipo_cliente | Tipo de cliente. |
numero_identificacion_contribuyente | Identificador fiscal del contribuyente. |
4.2. Información fiscal
| Campo | Descripción |
|---|---|
regimen_fiscal | Código del régimen fiscal. |
desc_regimen_fiscal | Descripción del régimen fiscal. |
tipo_persona_fisica | Código del tipo de persona. |
desc_tipo_persona_fisica | Descripción del tipo de persona. |
uso_cfdi | Código de uso de CFDI. |
desc_uso_cfdi | Descripción del uso de CFDI. |
email_facturacion | Correos de Facturación. |
4.3. Cuenta del cliente
| Campo | Descripción |
|---|---|
cust_account_id | Identificador de la cuenta del cliente. |
numero_cuenta_cliente | Número de cuenta del cliente. |
nombre_cuenta_cliente | Nombre de la cuenta del cliente. |
clase_cuenta | Código de la clase de cuenta. |
desc_clase_cuenta | Descripción de la clase de cuenta. |
account_osr_id | Identificador externo de la cuenta. |
account_osr | Referencia externa de la cuenta. |
4.4 Información comercial
| Campo | Descripción |
|---|---|
canal_tipo_cuenta | Código del canal asociado a la cuenta. |
desc_canal_tipo_cuenta | Descripción del canal. |
canal_400_tipo_cuenta | Código del canal utilizado en AS400. |
subcanal | Código del subcanal. |
desc_subcanal | Descripción del subcanal. |
grupo_comercial | Código del grupo comercial. |
desc_grupo_comercial | Descripción del grupo comercial. |
grupo_comercial_400 | Código del grupo comercial en AS400. |
macro_canal | Código del macro canal. |
desc_macro_canal | Descripción del macro canal. |
giro_cliente | Código del giro del cliente. |
desc_giro_cliente | Descripción del giro del cliente. |
metodo_comercializacion | Método de comercialización. |
desc_metodo_comercializacion | Descripción del método de comercialización. |
4.5. Facturación y pagos
| Campo | Descripción |
|---|---|
unidad_facturacion | Unidad utilizada para la facturación. |
desc_unidad_facturacion | Descripción de la unidad de facturación. |
forma_pago | Código de la forma de pago. |
desc_forma_pago | Descripción de la forma de pago. |
tipo_factura | Código del tipo de factura. |
desc_tipo_factura | Descripción del tipo de factura. |
metodo_pago | Código del método de pago. |
desc_metodo_pago | Descripción del método de pago. |
terminos_pago | Código de los términos de pago. |
desc_terminos_pago | Descripción de los términos de pago. |
dias_gracia | Días de gracia otorgados al cliente. |
dias_pago | Días establecidos para pago. |
dias_recepcion | Días asociados a la recepción. |
cuenta_bancaria | Cuenta bancaria del cliente. |
codigo_bancario | Código bancario asociado. |
4.6. Información de cobranza
| Campo | Descripción |
|---|---|
zona_cobranza | Código de la zona de cobranza. |
desc_zona_cobranza | Descripción de la zona de cobranza. |
grupo_concentrador | Código del grupo concentrador. |
desc_grupo_concentrador | Descripción del grupo concentrador. |
no_cliente_factura_concentrada | Número de cliente para factura concentrada. |
no_sucursal_factura_concentrada | Número de sucursal asociada a factura concentrada. |
4.7. Información de distribución
| Campo | Descripción |
|---|---|
plaza_distribucion | Código de la plaza de distribución. |
desc_plaza_distribucion | Descripción de la plaza de distribución. |
plaza_distribucion_400 | Código de plaza de distribución en AS400. |
cedis_asignado | Código del CEDIS asignado. |
desc_cedis_asignado | Descripción del CEDIS asignado. |
cedis_asignado_400 | Código del CEDIS en AS400. |
tipo_entrega | Código del tipo de entrega. |
desc_tipo_entrega | Descripción del tipo de entrega. |
factura_anticipada | Indicador de facturación anticipada. |
4.8. Segmentación y clasificación
| Campo | Descripción |
|---|---|
segmentacion_categoria_externa | Código de la segmentación externa. |
desc_segmentacion_categoria_externa | Descripción de la segmentación externa. |
categoria_interna | Código de la categoría interna. |
desc_categoria_interna | Descripción de la categoría interna. |
agrupacion_ibp | Código de agrupación IBP. |
desc_agrupacion_ibp | Descripción de agrupación IBP. |
agrupacion_ibp_400 | Código de agrupación IBP en AS400. |
zona_precios | Código de la zona de precios. |
desc_zona_precios | Descripción de la zona de precios. |
perfil_cliente | Perfil asignado al cliente. |
4.9. Sitios y direcciones
| Campo | Descripción |
|---|---|
party_site_id | Identificador del sitio del cliente. |
numero_sitio | Número del sitio. |
nombre_sitio | Nombre del sitio. |
direccion_primaria | Indicador de dirección primaria. |
party_site_osr_id | Identificador externo del sitio. |
party_site_osr | Referencia externa del sitio. |
location_id | Identificador de la ubicación. |
location_osr_id | Identificador externo de la ubicación. |
location_osr | Referencia externa de la ubicación. |
pais | País de la dirección. |
codigo_postal | Código postal. |
calle | Calle. |
numero_exterior | Número exterior. |
numero_interior | Número interior. |
colonia | Colonia. |
alcaldia_municipio | Alcaldía o municipio. |
estado | Estado. |
entre_calle_1 | Primera calle de referencia. |
entre_calle_2 | Segunda calle de referencia. |
latitud | Latitud geográfica. |
longitud | Longitud geográfica. |
codigo_gln | Código GLN de la ubicación. |
4.10. Uso de sitios de cuenta
| Campo | Descripción |
|---|---|
cust_acct_site_id | Identificador del sitio de la cuenta. |
bill_to_flag | Indicador de sitio de facturación. |
ship_to_flag | Indicador de sitio de envío. |
account_site_osr_id | Identificador externo del sitio de cuenta. |
account_site_osr | Referencia externa del sitio de cuenta. |
party_site_use_id | Identificador del uso del sitio. |
primario_por_tipo | Indicador de uso primario por tipo. |
party_site_use_osr_id | Identificador externo del uso del sitio. |
party_site_use_osr | Referencia externa del uso del sitio. |
site_use_id | Identificador del uso del sitio de cuenta. |
sitio_cuenta_primario | Indicador de sitio primario de la cuenta. |
uso_sitio_cuenta | Uso asignado al sitio de cuenta. |
sitio | Identificador o descripción del sitio. |
account_site_use_osr_id | Identificador externo del uso del sitio de cuenta. |
account_site_use_osr | Referencia externa del uso del sitio de cuenta. |
4.11. Información de integración
| Campo | Descripción |
|---|---|
party_osr_id | Identificador externo de la entidad. |
party_osr | Referencia externa de la entidad. |
account_osr_id | Identificador externo de la cuenta. |
account_osr | Referencia externa de la cuenta. |
party_site_osr_id | Identificador externo del sitio. |
party_site_osr | Referencia externa del sitio. |
location_osr_id | Identificador externo de la ubicación. |
location_osr | Referencia externa de la ubicación. |
identificador_edi | Identificador utilizado para integración EDI. |
referencia_cie | Referencia utilizada para CIE. |
codigo_exportacion | Código utilizado para procesos de exportación. |
4.12. Información adicional del cliente
| Campo | Descripción |
|---|---|
numero_proveedor | Número de proveedor asociado. |
incoterm | Término comercial internacional utilizado. |
tipo_addenda | Código del tipo de Addenda. |
desc_tipo_addenda | Descripción del tipo de Addenda. |
genera_addenda | Indicador de generación de Addenda. |
timbrado_individual | Indicador de timbrado individual. |
numero_tienda_retek | Número de tienda asociado a Retek. |
tipo_pedido_cliente | Tipo de pedido utilizado por el cliente. |
referencia_sucursal | Referencia de la sucursal. |
inspeccion_calidad | Indicador de inspección de calidad. |
guid_chep | Identificador GUID asociado a CHEP. |
zona_nielsen | Código de zona Nielsen. |
desc_zona_nielsen | Descripción de zona Nielsen. |
regional_responsable | Código de la regional responsable. |
desc_regional_responsable | Descripción de la regional responsable. |
cedis_asignado_as400 | Código del CEDIS utilizado en AS400. |
5. Diagrama funcional
Oracle Accounts Receivable
│
▼
alp_cat_ar_clientes
│
│
│ Prioridad 1
│
├───────────────┐
│ │
▼ │
UNION ALL │
▲ │
│ │
│ │
alp_cat_cdm_clientes │
│ │
│ │
NOT EXISTS party_id en AR │
│ │
▼ │
Registros CDM │
│ │
└───────┬───────┘
│
▼
Normalización de datos
│
▼
mv_cat_oracle_clientes
│
▼
Catálogo consolidado
6. Resumen
La vista mv_cat_oracle_clientes funciona como una fuente consolidada de información maestra de clientes de Oracle.
La lógica principal es:
Oracle AR
│
├── Todos los registros
│
▼
Prioridad
│
▼
UNION ALL
▲
│
Oracle CDM
│
└── Solo registros cuyo party_id
no existe en AR
│
▼
Normalización de datos
│
▼
Catálogo consolidado
│
▼
mv_cat_oracle_clientes
La vista permite contar con una única estructura de consulta para la información de clientes, manteniendo la información de AR como fuente principal y utilizando CDM como fuente complementaria.
7. SQL
- Código
- Ejecución en BD
- Ejecución de Activas
CREATE OR REPLACE VIEW general_catalogs.mv_cat_oracle_clientes AS
SELECT
ar.appl_source,
ar.party_id,
ar.identificador_registro,
ar.nombre,
ar.tipo_cliente,
ar.numero_identificacion_contribuyente,
ar.regimen_fiscal,
ar.desc_regimen_fiscal,
ar.tipo_persona_fisica,
ar.desc_tipo_persona_fisica,
ar.party_osr_id,
ar.party_osr,
ar.cust_account_id,
ar.numero_cuenta_cliente,
ar.nombre_cuenta_cliente,
ar.clase_cuenta,
ar.desc_clase_cuenta,
ar.canal_tipo_cuenta,
ar.desc_canal_tipo_cuenta,
ar.canal_400_tipo_cuenta,
ar.grupo_comercial,
ar.desc_grupo_comercial,
ar.grupo_comercial_400,
ar.unidad_facturacion,
ar.desc_unidad_facturacion,
ar.forma_pago,
ar.desc_forma_pago,
ar.tipo_factura,
ar.desc_tipo_factura,
ar.metodo_pago,
ar.desc_metodo_pago,
ar.dias_gracia::double precision AS dias_gracia,
ar.codigo_bancario::double precision AS codigo_bancario,
ar.subcanal,
ar.desc_subcanal,
ar.zona_cobranza,
ar.desc_zona_cobranza,
ar.dias_pago,
ar.dias_recepcion,
ar.grupo_concentrador,
ar.desc_grupo_concentrador,
ar.no_cliente_factura_concentrada::double precision
AS no_cliente_factura_concentrada,
ar.agrupacion_ibp,
ar.desc_agrupacion_ibp,
ar.agrupacion_ibp_400,
ar.timbrado_individual,
ar.uso_cfdi,
ar.desc_uso_cfdi,
ar.numero_proveedor,
ar.incoterm,
ar.tipo_addenda,
ar.desc_tipo_addenda,
ar.macro_canal,
ar.desc_macro_canal,
ar.giro_cliente,
ar.desc_giro_cliente,
ar.genera_addenda,
ar.referencia_cie,
ar.referencia_cuenta,
ar.account_osr_id,
ar.account_osr,
ar.party_site_id,
ar.numero_sitio,
ar.nombre_sitio,
ar.direccion_primaria,
ar.party_site_osr_id,
ar.party_site_osr,
ar.location_id,
ar.pais,
ar.codigo_postal,
ar.calle,
ar.numero_exterior,
ar.numero_interior,
ar.colonia,
ar.alcaldia_municipio,
ar.estado,
ar.entre_calle_1,
ar.entre_calle_2,
ar.latitud,
ar.longitud,
ar.codigo_gln,
ar.location_osr_id,
ar.location_osr,
ar.cust_acct_site_id,
ar.bill_to_flag,
ar.ship_to_flag,
ar.plaza_distribucion,
ar.desc_plaza_distribucion,
ar.plaza_distribucion_400,
ar.factura_anticipada,
ar.cedis_asignado,
ar.desc_cedis_asignado,
ar.cedis_asignado_400,
NULLIF(TRIM(ar.no_sucursal_factura_concentrada), '')::double precision
AS no_sucursal_factura_concentrada,
ar.codigo_exportacion,
ar.zona_nielsen,
ar.desc_zona_nielsen,
ar.regional_responsable,
ar.desc_regional_responsable,
ar.tipo_entrega,
ar.desc_tipo_entrega,
ar.segmentacion_categoria_externa,
ar.desc_segmentacion_categoria_externa,
ar.categoria_interna,
ar.desc_categoria_interna,
NULLIF(TRIM(ar.cuenta_bancaria), '')::double precision
AS cuenta_bancaria,
ar.metodo_comercializacion,
ar.desc_metodo_comercializacion,
ar.codigo_sucursal,
ar.identificador_edi,
ar.zona_precios,
ar.desc_zona_precios,
NULLIF(TRIM(ar.guid_chep), '')::double precision
AS guid_chep,
ar.inspeccion_calidad,
ar.numero_tienda_retek,
ar.perfil_cliente,
ar.tipo_pedido_cliente,
ar.referencia_sucursal,
ar.account_site_osr_id,
ar.account_site_osr,
ar.party_site_use_id,
ar.primario_por_tipo,
ar.party_site_use_osr_id,
ar.party_site_use_osr,
ar.site_use_id,
ar.sitio_cuenta_primario,
ar.uso_sitio_cuenta,
ar.sitio,
ar.account_site_use_osr_id,
ar.account_site_use_osr,
ar.terminos_pago,
ar.desc_terminos_pago,
ar.cedis_asignado_as400,
ar.email_facturacion
FROM alp_cat_ar_clientes ar
UNION ALL
SELECT
cdm.appl_source,
cdm.party_id,
cdm.identificador_registro,
cdm.nombre,
cdm.tipo_cliente,
cdm.numero_identificacion_contribuyente,
cdm.regimen_fiscal,
cdm.desc_regimen_fiscal,
cdm.tipo_persona_fisica,
cdm.desc_tipo_persona_fisica,
cdm.party_osr_id,
cdm.party_osr,
NULLIF(TRIM(cdm.cust_account_id), '')::double precision
AS cust_account_id,
cdm.numero_cuenta_cliente,
cdm.nombre_cuenta_cliente,
cdm.clase_cuenta,
cdm.desc_clase_cuenta,
cdm.canal_tipo_cuenta,
cdm.desc_canal_tipo_cuenta,
cdm.canal_400_tipo_cuenta,
cdm.grupo_comercial,
cdm.desc_grupo_comercial,
cdm.grupo_comercial_400,
cdm.unidad_facturacion,
cdm.desc_unidad_facturacion,
cdm.forma_pago,
cdm.desc_forma_pago,
cdm.tipo_factura,
cdm.desc_tipo_factura,
cdm.metodo_pago,
cdm.desc_metodo_pago,
cdm.dias_gracia,
cdm.codigo_bancario,
cdm.subcanal,
cdm.desc_subcanal,
cdm.zona_cobranza,
cdm.desc_zona_cobranza,
cdm.dias_pago,
cdm.dias_recepcion,
cdm.grupo_concentrador,
cdm.desc_grupo_concentrador,
cdm.no_cliente_factura_concentrada,
cdm.agrupacion_ibp,
cdm.desc_agrupacion_ibp,
cdm.agrupacion_ibp_400,
cdm.timbrado_individual,
cdm.uso_cfdi,
cdm.desc_uso_cfdi,
cdm.numero_proveedor,
cdm.incoterm,
cdm.tipo_addenda,
cdm.desc_tipo_addenda,
cdm.macro_canal,
cdm.desc_macro_canal,
cdm.giro_cliente,
cdm.desc_giro_cliente,
cdm.genera_addenda,
cdm.referencia_cie,
cdm.referencia_cuenta,
NULLIF(TRIM(cdm.account_osr_id), '')::double precision
AS account_osr_id,
cdm.account_osr,
NULLIF(TRIM(cdm.party_site_id), '')::double precision
AS party_site_id,
cdm.numero_sitio,
cdm.nombre_sitio,
cdm.direccion_primaria,
NULLIF(TRIM(cdm.party_site_osr_id), '')::double precision
AS party_site_osr_id,
cdm.party_site_osr,
cdm.location_id,
cdm.pais,
cdm.codigo_postal,
cdm.calle,
cdm.numero_exterior,
cdm.numero_interior,
cdm.colonia,
cdm.alcaldia_municipio,
cdm.estado,
cdm.entre_calle_1,
cdm.entre_calle_2,
cdm.latitud,
cdm.longitud,
cdm.codigo_gln,
NULLIF(TRIM(cdm.location_osr_id), '')::double precision
AS location_osr_id,
cdm.location_osr,
NULLIF(TRIM(cdm.cust_acct_site_id), '')::double precision
AS cust_acct_site_id,
cdm.bill_to_flag,
cdm.ship_to_flag,
cdm.plaza_distribucion,
cdm.desc_plaza_distribucion,
cdm.plaza_distribucion_400,
cdm.factura_anticipada,
cdm.cedis_asignado,
cdm.desc_cedis_asignado,
cdm.cedis_asignado_400,
cdm.no_sucursal_factura_concentrada,
cdm.codigo_exportacion,
cdm.zona_nielsen,
cdm.desc_zona_nielsen,
cdm.regional_responsable,
cdm.desc_regional_responsable,
cdm.tipo_entrega,
cdm.desc_tipo_entrega,
cdm.segmentacion_categoria_externa,
cdm.desc_segmentacion_categoria_externa,
cdm.categoria_interna,
cdm.cuenta_bancaria,
cdm.metodo_comercializacion,
cdm.desc_metodo_comercializacion,
cdm.codigo_sucursal,
cdm.identificador_edi,
cdm.zona_precios,
cdm.desc_zona_precios,
cdm.guid_chep,
cdm.inspeccion_calidad,
cdm.numero_tienda_retek,
cdm.perfil_cliente,
cdm.tipo_pedido_cliente,
cdm.referencia_sucursal,
NULLIF(TRIM(cdm.account_site_osr_id), '')::double precision
AS account_site_osr_id,
cdm.account_site_osr,
NULLIF(TRIM(cdm.party_site_use_id), '')::double precision
AS party_site_use_id,
cdm.primario_por_tipo,
NULLIF(TRIM(cdm.party_site_use_osr_id), '')::double precision
AS party_site_use_osr_id,
cdm.party_site_use_osr,
NULLIF(TRIM(cdm.site_use_id), '')::double precision
AS site_use_id,
cdm.sitio_cuenta_primario,
cdm.uso_sitio_cuenta,
cdm.sitio,
NULLIF(TRIM(cdm.account_site_use_osr_id), '')::double precision
AS account_site_use_osr_id,
cdm.account_site_use_osr,
cdm.terminos_pago,
cdm.desc_terminos_pago,
cdm.cedis_asignado_as400,
cdm.email_facturacion
FROM alp_cat_cdm_clientes cdm
WHERE NOT EXISTS (
SELECT 1
FROM alp_cat_ar_clientes ar
WHERE ar.party_id = cdm.party_id
);
SELECT *
FROM general_catalogs.mv_cat_oracle_clientes;
SELECT *
FROM general_catalogs.mv_cat_oracle_clientes
WHERE is_active = TRUE;