11 INVOICE DASHBOARD

11 INVOICE DASHBOARD


ENTIDAD GOLD DE TABLERO DE FACTURAS 

También conocido como Tablero de Ventas, este modelo pertenece a la capa Gold de la arquitectura de medallón y está compuesto por la entidad BI_SILVER_SD_INVOICE_ECC. Su objetivo principal es proporcionar una visión consolidada y analítica de las ventas realizadas en el tiempo, permitiendo un monitoreo efectivo del desempeño comercial.




Características del Modelo:

  • Análisis temporal: Permite visualizar las ventas tanto en un nivel anual como mensual, facilitando la evaluación de tendencias. 
  • Gestión de moneda: Considera las ventas en distintas monedas, asegurando una correcta interpretación de los valores de facturación en función de las tasas de conversión aplicadas. 
  • Consolidación de datos: Integra información clave de facturación para proporcionar reportes detallados y dashboards estratégicos. 



Entidades que componen el Tablero de Inventarios 

  1. BI_GOLD_SALES_INVOICE_ECC.sql

BI_GOLD_SALES_INVOICE_ECC 

Este modelo pertenece a la capa Gold de la arquitectura medallón y se compone de la entidad Silver de facturas. Su propósito es proyectas los totales vendidos por año y mes.

Este modelo pertenece a la capa Gold de la arquitectura de medallón y se compone de la entidad Silver de facturas. Su propósito es proyectar los totales de ventas realizadas por año y mes, proporcionando una visión consolidada del desempeño comercial.




Características del Modelo:

  • Análisis temporal: Agrega los montos de facturación a nivel anualmensual, permitiendo evaluar tendencias de ventas a lo largo del tiempo. 
  • Consolidación de facturación: Integra información de múltiples documentos de ventas para obtener un total agregado por período. 



    Dependencias 
  • BI_SILVER_SD_INVOICE_ECC (Facturas de Venta - Capa Silver)
    Contiene información consolidada de las facturas de venta dentro del módulo SD en SAP.
    BI_SILVER_SD_INVOICE_ECC
  • T001W (Centros de Planta)
    Contiene la lista de centros en SAP, representando ubicaciones físicas donde se realizan operaciones logísticas, productivas o de almacenamiento.
    <client>_<environment>_DM_PLANTAS
  • TVKOT (Organización de Ventas - Descripción)
    Contiene las descripciones de las organizaciones de ventas en diferentes idiomas, permitiendo identificar las estructuras comerciales dentro de SAP.
    <client>_<environment>_DM_ORGANIZACION_VENTAS_TXT
  • TVTWT (Canales de Distribución - Descripción)
    Almacena las descripciones de los canales de distribución utilizados en SAP, facilitando la segmentación y gestión de ventas.
    <client>_<environment>_DM_CANAL_DISTRBUCION_TXT
  • TSPAT (Grupo de Estadísticas de Materiales)
    Contiene información sobre la clasificación de materiales para estadísticas de ventas y análisis de desempeño comercial.
    <client>_<environment>_DM_SECTOR_COMERCIAL_TXT
  • T023T (Grupo de Materiales - Descripción)
    Almacena las descripciones de los grupos de materiales en diferentes idiomas, facilitando la categorización de productos dentro del sistema SAP.
    <client>_<environment>_DM_GRUPO_MATERIAL_TXT
  • TVKBT (Grupos de Clientes - Descripción)
    Contiene las descripciones de los grupos de clientes en SAP SD, permitiendo segmentar estrategias de venta y políticas comerciales.
    <client>_<environment>_DM_OFICINA_VENTAS_TXT
  • T179T (Jerarquía de Materiales - Descripción)
    Almacena la información estructurada de la jerarquía de materiales, facilitando la clasificación de productos dentro del sistema.
    <client>_<environment>_DM_JERARQUIA_MATERIALES_TXT
  • T171T (Tipos de Facturación - Descripción)
    Contiene la información descriptiva de los diferentes tipos de facturación utilizados en SAP, permitiendo su correcta identificación y análisis.
    <client>_<environment>_ZONA_VENTAS_TXT


Supuestos 

  • Las ventas mensuales se calculan como la sumatoria de valor_neto_vbrp, agrupada por mes, año, material y moneda.
  • El mes y el año se extraen del campo fechafact_vbrk utilizando las siguientes transformaciones:

substring(ssi.fechafact_vbrk, 1, 6) AS mes_factura,

substring(ssi.mes_factura, 5, 2) AS mes,

substring(ssi.mes_factura, 1, 4) AS anio





Instalación 

docker-compose up -d dbt_bi_invoice --build




Modelo sql ejecutado 

  1. {{ config(
  2.    order_by="(mes_factura,
  3.    material_vbrp,
  4.    moneda_vbrk)",
  5.    engine='ReplacingMergeTree(_version)',
  6.    materialized='incremental',
  7.    incremental_strategy='append'
  8. )
  9. }}


  10.  WITH new_data AS (
  11.    SELECT
  12.        ssi.factura_vbrk, -- VBELN
  13.        ssi.ctdfacume_vbrp, -- FKLMG
  14.        ssi.valor_neto_vbrp, -- NETWR
  15.        ssi.tipo_doc_vbrk, -- VBTYP
  16.        ssi.anulada_vbrk, -- FKSTO
  17.        ssi.fechafact_vbrk, -- FKDAT
  18.        ssi.centro_vbrp, -- WERKS
  19.        ssi.orgventas_vbrk, -- VKORG
  20.        ssi.candistr_vbrk, -- VTWEG
  21.        ssi.sector1_vbrp, -- SPARA
  22.        ssi.gpoartic_vbrp, -- MATKL
  23.        ssi.oficvta_vbrp, -- VKBUR
  24.        ssi.jquiaprod_vbrp, -- PRODH
  25.        ssi.zona_vta_vbrk, -- BZIRK
  26.        ssi.material_vbrp, -- MATNR
  27.        ssi.denomin1_vbrp, -- ARKTX
  28.        ssi.moneda_vbrk, -- WAERK
  29.        substring(ssi.fechafact_vbrk, 1, 6) AS mes_factura
  30.    FROM {{ ref('BI_SILVER_SD_INVOICE_ECC')}} AS ssi FINAL
  31.    WHERE ssi.tipo_doc_vbrk = 'M' AND ssi.anulada_vbrk != 'X'
  32.        {% if is_incremental() %}
  33.        AND ssi._version >= (select max(_version) from {{this}})
  34.        {% endif %}
  35.  ),

  36. affected_data AS (
  37.    {% if is_incremental() %}
  38.    SELECT 
  39.        ssi.ctdfacume_vbrp,
  40.        ssi.valor_neto_vbrp,
  41.        ssi.factura_vbrk,
  42.        ssi.tipo_doc_vbrk,
  43.        ssi.anulada_vbrk,
  44.        ssi.fechafact_vbrk,
  45.        ssi.centro_vbrp,
  46.        ssi.orgventas_vbrk,
  47.        ssi.candistr_vbrk,
  48.        ssi.sector1_vbrp,
  49.        ssi.gpoartic_vbrp,
  50.        ssi.oficvta_vbrp,
  51.        ssi.jquiaprod_vbrp,
  52.        ssi.zona_vta_vbrk,
  53.        ssi.material_vbrp,
  54.        ssi.denomin1_vbrp,
  55.        ssi.moneda_vbrk,
  56.        substring(ssi.fechafact_vbrk, 1, 6) AS mes_factura
  57.    FROM {{ ref('BI_SILVER_SD_INVOICE_ECC')}} AS ssi FINAL
  58.    WHERE (ssi.material_vbrp, substring(ssi.fechafact_vbrk, 1, 6)) IN (SELECT DISTINCT material_vbrp, mes_factura FROM new_data)

  59.    {% else %}
  60.    -- PROCESAR TODO
  61.    SELECT 
  62.        *
  63.    FROM new_data

  64.    {% endif %}

  65.  ),

  66. transform_data AS (
  67.    SELECT 
  68.    SUM(valor_neto_vbrp) AS ventas_mensual,
  69.    mes_factura,
  70.    any(centro_vbrp) as centro_vbrp,
  71.    any(orgventas_vbrk) as orgventas_vbrk,
  72.    any(candistr_vbrk) as candistr_vbrk,
  73.    any(sector1_vbrp) as sector1_vbrp,
  74.    any(gpoartic_vbrp) as gpoartic_vbrp,
  75.    any(oficvta_vbrp) as oficvta_vbrp,
  76.    any(jquiaprod_vbrp) as jquiaprod_vbrp,
  77.    any(zona_vta_vbrk) as zona_vta_vbrk,
  78.    material_vbrp,
  79.    any(denomin1_vbrp) as denomin1_vbrp,
  80.    moneda_vbrk
  81.    FROM affected_data
  82.    GROUP BY 
  83.        mes_factura, 
  84.        material_vbrp,
  85.        moneda_vbrk
  86.    order by mes_factura asc
  87.  )

  88.  SELECT 
  89.    ssi.ventas_mensual as ventas_mensual,
  90.    substring(ssi.mes_factura, 5, 2) AS mes,
  91.    substring(ssi.mes_factura, 1, 4) AS anio,
  92.    ssi.mes_factura as mes_factura,
  93.    
  94.    ssi.centro_vbrp AS centro_vbrp,
  95.    ssi.orgventas_vbrk AS orgventas_vbrk,
  96.    ssi.candistr_vbrk AS candistr_vbrk,
  97.    ssi.sector1_vbrp AS sector1_vbrp,
  98.    ssi.gpoartic_vbrp AS gpoartic_vbrp,
  99.    ssi.oficvta_vbrp AS oficvta_vbrp,
  100.    ssi.jquiaprod_vbrp AS jquiaprod_vbrp,
  101.    ssi.zona_vta_vbrk AS zona_vta_vbrk,
  102.    ssi.material_vbrp AS material_vbrp,
  103.    ssi.denomin1_vbrp AS denomin1_vbrp,
  104.    ssi.moneda_vbrk AS moneda_vbrk,
  105.    
  106.    t001w.nom1 as centro,
  107.    t001w.idioma  AS idioma,
  108.    tvkot.denomin AS orgventas,
  109.    tvtwt.denomin AS candistr,
  110.    tspat.denomin AS sector,
  111.    t023t.gpoartic1 AS gpoartic,
  112.    tvkbt.denomin AS oficvta,
  113.    t179t.denom  as jquiaprod,
  114.    t171t.denomzvtas AS zona_vta,
  115.    now64() as _version 
  116.  FROM transform_data AS ssi
  117. LEFT JOIN (SELECT cp, nom1, centro , idioma   FROM {{ source('oneconnect', 'PR0_B_DM_PLANTAS') }} FINAL) AS  t001w  on t001w.centro  = ssi.centro_vbrp AND t001w.idioma ='S'
  118. LEFT JOIN (SELECT denomin, orgventas, idioma FROM {{ source('oneconnect', 'PR0_B_DM_ORGANIZACION_VENTAS_TXT') }} FINAL) AS tvkot on tvkot.orgventas  = ssi.orgventas_vbrk  and tvkot.idioma = t001w.idioma
  119. LEFT JOIN (SELECT denomin, candistr, idioma FROM {{ source('oneconnect', 'PR0_B_DM_CANAL_DISTRBUCION_TXT') }} FINAL) AS tvtwt  on tvtwt.candistr  = ssi.candistr_vbrk  and tvtwt.idioma = t001w.idioma
  120. LEFT JOIN (SELECT idioma, sector, denomin FROM {{ source('oneconnect', 'PR0_B_DM_SECTOR_COMERCIAL_TXT') }} FINAL) AS  tspat  on tspat.sector  = ssi.sector1_vbrp and tspat.idioma = t001w.idioma
  121. LEFT JOIN (SELECT gpoartic1, gpoartic, idioma FROM {{ source('oneconnect', 'PR0_B_DM_GRUPO_MATERIAL_TXT') }} FINAL) AS t023t  on  t023t.gpoartic = ssi.gpoartic_vbrp and t023t.idioma = t001w.idioma
  122. LEFT JOIN (SELECT idioma, oficvta, denomin  FROM {{ source('oneconnect', 'PR0_B_DM_OFICINA_VENTAS_TXT') }} FINAL) AS tvkbt  on tvkbt.oficvta = ssi.oficvta_vbrp and tvkbt.idioma = t001w.idioma
  123. LEFT JOIN (SELECT idioma, jquiaprod, denom  FROM {{ source('oneconnect', 'PR0_B_DM_JERARQUIA_MATERIALES_TXT') }} FINAL) AS t179t  on t179t.jquiaprod = ssi.jquiaprod_vbrp and t179t.idioma = t001w.idioma
  124. LEFT JOIN (SELECT zona_vta, denomzvtas, idioma  FROM {{ source('oneconnect', 'PR0_B_DM_ZONA_VENTAS_TXT') }} FINAL)  AS t171t ON t171t.zona_vta =  ssi.zona_vta_vbrk  and t001w.idioma = t171t.idioma



    • Related Articles

    • INVOICE DASHBOARD

      Tablero de Facturación Descripción General Propósito: Análisis de ventas y facturación mensual. Fuente de Datos: ClickHouse. Instalación del Tablero Paso 1: Importar el JSON en Grafana Iniciar sesión en Grafana. Ir a Dashboards → Manage → Import. ...
    • 03 SILVER SD INVOICE ECC

      ENTIDAD SILVER DE FACTURAS Este modelo de datos pertenece a la capa Silver de la arquitectura de medallón, donde los datos han sido limpiados, integrados y estructurados para su uso analítico. Se enfoca en las tablas clave relacionadas con el módulo ...
    • 03. SILVER INVOICE ENTITY (DRAFT EN INGLES)

      This data model belongs to the Silver layer of the medallion architecture, where data has been cleaned, integrated, and structured for analytical use. It focuses on key tables related to the Sales and Distribution (SD) module and the Invoice ...
    • INVENTORY DASHBOARD

      Tablero de Inventarios Descripción General Propósito: El Tablero de Inventario está compuesto por entidades que consolidan información clave de órdenes de compra, órdenes de venta y órdenes de producción para mostrar los materiales entrantes y ...
    • PRODUCCTION DASHBOARD

      Tablero de Producción Descripción General Propósito: Seguimiento de ordenes y el seguimiento del performance de los procesos de producción, como la cantidad, calidad y eficiencia. Fuente de Datos: ClickHouse. Instalación del Tablero Paso 1: Importar ...