Su Template de datos de Order-to-Cash: facturación y emisión de facturas
Su Template de datos de Order-to-Cash: facturación y emisión de facturas
- Atributos recomendados para recopilar
- Actividades clave que debe supervisar
- Guía de extracción para NetSuite
Atributos de Order to Cash: facturación y emisión de facturas
| Nombre | Descripción | ||
|---|---|---|---|
| Marca de tiempo del evento EventTimestamp | La fecha y hora exactas en que tuvo lugar una actividad o un evento específico. | ||
| Descripción Este atributo registra el momento exacto en que se realizó una actividad. Es un componente fundamental para ordenar cronológicamente los eventos y para todos los análisis basados en el tiempo. En Process Mining, la marca de tiempo del evento se utiliza para calcular los tiempos de ciclo entre actividades, la duración de los casos y los tiempos de espera. Es esencial para identificar cuellos de botella, medir el rendimiento del proceso frente a los SLA y comprender la dinámica temporal del proceso de facturación. Por ejemplo, se utiliza para calcular el Invoice Generation Cycle Time y los Days Sales Outstanding (DSO). Por qué es importante Proporciona el orden cronológico de los eventos, esencial para calcular todas las métricas basadas en la duración, identificar cuellos de botella y analizar el rendimiento del proceso a lo largo del tiempo. Dónde obtenerlo La información de la marca de tiempo suele encontrarse en las notas del sistema, los registros de auditoría o los campos «Date Created» de los registros relacionados con cada transacción de factura en NetSuite. Ejemplos 2023-10-26T10:00:00Z2023-10-27T14:30:00Z2023-11-15T09:05:00Z | |||
| Nombre de la actividad ActivityName | El nombre del evento empresarial que tuvo lugar en un momento concreto del ciclo de vida de la factura. | ||
| Descripción El nombre de la actividad describe un paso o evento específico del proceso de facturación, como «Invoice Created», «Invoice Approved» o «Customer Payment Received». Estas actividades forman los bloques secuenciales del mapa de procesos. Analizar la secuencia y la frecuencia de estas actividades es fundamental en Process Mining. Ayuda a visualizar el flujo real del proceso, identificar las rutas frecuentes y poco habituales del proceso, es decir, sus variantes, y localizar las actividades que se repiten con frecuencia, lo que indica retrabajo o ineficiencia. Por qué es importante Este atributo es fundamental para construir el mapa de procesos, ya que permite visualizar y analizar los distintos pasos y recorridos que sigue una factura. Dónde obtenerlo Se obtiene de los registros del sistema, los cambios de estado o los registros de eventos específicos asociados a la transacción de la factura en NetSuite. A menudo requiere asignar los cambios de estado de la transacción o la creación de registros relacionados a nombres de actividad definidos. Ejemplos Factura creadaFactura aprobadaPago del cliente recibidoFactura pagada en su totalidad | |||
| Número de factura InvoiceNumber | El identificador único de cada documento de factura, que actúa como identificador principal del caso para el proceso de facturación. | ||
| Descripción El número de factura es la base del análisis del proceso de facturación, ya que identifica de forma única cada factura desde su creación hasta su cierre definitivo. Agrupa todas las actividades relacionadas, como la aprobación, el envío y la aplicación del pago, en un único caso coherente. En Process Mining, analizar el recorrido de cada número de factura permite obtener una visión completa de todo el ciclo de vida de la facturación. Esto facilita la identificación de variantes del proceso, cuellos de botella y desviaciones del procedimiento estándar, y proporciona información clave para optimizar el flujo de efectivo y la eficiencia operativa. Por qué es importante Es esencial para realizar el seguimiento del ciclo de vida integral de cada factura, reconstruir todo el proceso de facturación y llevar a cabo un análisis detallado del rendimiento. Dónde obtenerlo Normalmente es el campo «Transaction ID» u otro identificador único similar del registro de transacción de la factura en NetSuite. Ejemplos INV-0012345INV-0012346INV-0012347 | |||
| Sistema de origen SourceSystem | El sistema del que se extrajeron los datos. | ||
| Descripción Este atributo identifica el origen de los datos del proceso. En esta vista, sería siempre «NetSuite». En un contexto analítico más amplio, especialmente en organizaciones con varios ERP o sistemas integrados, este atributo es fundamental para la trazabilidad y la gobernanza de los datos. Ayuda a diferenciar los procesos que pueden abarcar distintas plataformas y garantiza que el análisis se atribuya correctamente al sistema de registro correspondiente. Por qué es importante Proporciona un contexto esencial sobre el origen y la gobernanza de los datos, especialmente en entornos donde pueden estar integrados varios sistemas. Dónde obtenerlo Es un valor estático («NetSuite») añadido durante el proceso de extracción y transformación de datos. Ejemplos NetSuite | |||
| Última actualización de datos LastDataUpdate | La marca de tiempo que indica la última vez que se actualizaron los datos desde el sistema de origen. | ||
| Descripción Este atributo registra cuándo se actualizó por última vez el conjunto de datos. Proporciona contexto sobre la actualidad y la relevancia del análisis de Process Mining. Las personas analistas y las partes interesadas del negocio utilizan esta información para saber si los insights reflejan el estado operativo más reciente. Es un elemento de metadatos fundamental para cualquier Dashboard o informe, ya que garantiza que las decisiones se basen en datos cuya antigüedad se conoce y que no se interpreten como datos en tiempo real si no lo son. Por qué es importante Informa a los usuarios sobre la actualidad de los datos y garantiza que comprendan el periodo del análisis y la relevancia de los insights. Dónde obtenerlo Esta marca de tiempo la genera y registra la herramienta o el pipeline de extracción de datos cuando se actualizan los datos. Ejemplos 2024-05-21T02:00:00Z | |||
| Es automática IsAutomated | Indicador que señala si el sistema realizó una actividad automáticamente. | ||
| Descripción Este atributo booleano distingue entre las actividades realizadas manualmente por una persona usuaria y las ejecutadas automáticamente mediante un Workflow, un script o una integración del sistema. Este atributo es clave para medir el nivel de automatización del proceso de facturación y respalda directamente el KPI «Automated Billing Ratio». Al filtrar las actividades automáticas o manuales, los equipos de análisis pueden identificar cuellos de botella causados por la intervención manual y detectar oportunidades para aumentar la automatización, reducir los errores humanos y mejorar la eficiencia. Por qué es importante Ayuda a medir el nivel de automatización del proceso, identificar oportunidades para reducir el esfuerzo manual y aumentar la eficiencia. Dónde obtenerlo Normalmente se obtiene comprobando el campo «User» asociado a una actividad. Los eventos activados por usuarios llamados «SYSTEM», «Workflow» o «Integration» se marcan como automáticos. Ejemplos truefalse | |||
| Fecha de factura InvoiceDate | La fecha oficial de la factura, tal como se emitió al cliente. | ||
| Descripción La fecha de factura, o fecha de la transacción, es el punto de partida de muchos cálculos financieros relacionados con la facturación. Normalmente, a partir de esta fecha se calculan las condiciones de pago y las fechas de vencimiento. En el análisis, esta fecha sirve como referencia principal para calcular KPI financieros clave, como los Days Sales Outstanding (DSO) y la antigüedad de las facturas. Permite realizar análisis por cohortes y comparar el rendimiento de la facturación en distintos periodos, por ejemplo, mes a mes o año a año. Por qué es importante Esta fecha es la referencia de métricas financieras críticas, como los Days Sales Outstanding (DSO) y la antigüedad de las facturas, y afecta directamente al análisis del capital circulante. Dónde obtenerlo Corresponde al campo «Date» (trandate) del registro de transacción de la factura en NetSuite. Ejemplos 2023-10-262023-10-272023-11-15 | |||
| Fecha de vencimiento DueDate | La fecha límite en la que debe pagarse la factura. | ||
| Descripción La fecha de vencimiento se calcula a partir de la fecha de factura y las condiciones de pago acordadas. Representa el plazo que tiene el cliente para realizar el pago sin que se considere atrasado. Este atributo es esencial para supervisar las cuentas por cobrar y gestionar el flujo de efectivo. Es la referencia utilizada para calcular el KPI On-Time Payment Rate y analizar el comportamiento de pago de los clientes. El seguimiento de las desviaciones respecto a la fecha de vencimiento ayuda a identificar a los clientes que pagan tarde con frecuencia y a evaluar la eficacia de las estrategias de cobro. Por qué es importante Es fundamental para medir el rendimiento de los pagos puntuales y analizar el comportamiento de pago de los clientes, y respalda directamente la gestión de cobros y la previsión del flujo de efectivo. Dónde obtenerlo Corresponde al campo «Due Date» (duedate) del registro de transacción de la factura en NetSuite. Ejemplos 2023-11-252023-11-262023-12-15 | |||
| Hora de finalización del evento EventEndTime | La fecha y hora exactas en que se completó una actividad o un evento específico. | ||
| Descripción La hora de finalización del evento marca la conclusión de una actividad. Aunque muchas actividades son instantáneas, por lo que la hora de inicio y de finalización coinciden, algunas, como un paso de aprobación, pueden tener una duración medible. Este atributo, junto con la marca de tiempo del evento, es decir, la hora de inicio, permite calcular directamente el tiempo de procesamiento de una actividad. Analizar el tiempo de procesamiento ayuda a identificar qué pasos concretos consumen más tiempo y recursos, diferenciándolo del tiempo de espera entre actividades. Esto es fundamental para localizar ineficiencias en tareas específicas. Por qué es importante Permite calcular con precisión cuánto tarda en completarse cada actividad, algo esencial para analizar la eficiencia de los recursos e identificar las tareas que consumen más tiempo. Dónde obtenerlo Al igual que StartTime, puede obtenerse de los registros de auditoría del sistema en NetSuite. Puede requerir lógica para emparejar un evento de «inicio» con el evento de «fin» correspondiente. Ejemplos 2023-10-26T10:05:14Z2023-10-27T14:32:00Z2023-11-15T09:05:00Z | |||
| Importe total de la factura InvoiceTotalAmount | El valor monetario total de la factura, incluidos los impuestos y otros cargos. | ||
| Descripción Este atributo representa el importe total que se espera que pague el cliente. Es un dato financiero fundamental para cada caso de facturación. Analizar el proceso según el importe de la factura permite realizar análisis basados en el valor. Por ejemplo, puede revelar si las facturas de importe elevado siguen un proceso diferente y más complejo que las de importe reducido. También se utiliza para priorizar las gestiones de cobro y comprender el impacto financiero de los retrasos en los pagos o de los errores en las facturas. Por qué es importante Permite analizar el proceso según el valor, priorizar las facturas de importe elevado y comprender el impacto financiero de las ineficiencias del proceso. Dónde obtenerlo Corresponde al campo «Total» del registro de transacción de factura en NetSuite. Ejemplos 1500.0089.9912500.50 | |||
| Nombre del cliente CustomerName | El nombre del cliente al que se emitió la factura. | ||
| Descripción Este atributo identifica a la entidad jurídica o persona a la que se factura. Vincula el proceso de facturación con la función de gestión de las relaciones con los clientes. Analizar el proceso de facturación por cliente ayuda a identificar patrones de comportamiento de pago, disputas o complejidad de las facturas para clientes concretos. Esta información puede orientar las estrategias de segmentación de clientes, las decisiones sobre límites de crédito y los enfoques de cobro personalizados. Por ejemplo, puede revelar si un cliente concreto tiene sistemáticamente facturas que requieren repeticiones. Por qué es importante Permite realizar análisis centrados en el cliente y ayuda a identificar patrones de pago, problemas frecuentes o desviaciones del proceso específicos de determinados clientes. Dónde obtenerlo Corresponde al campo del nombre «Customer» o «Entity» del registro de transacción de factura en NetSuite. Ejemplos Global Tech Inc.Innovate Solutions LLCCornerstone Corp | |||
| Región Region | La región geográfica asociada al cliente o a la transacción. | ||
| Descripción El atributo Region clasifica las facturas según la geografía, que puede derivarse de la dirección del cliente o de la unidad de negocio que emitió la factura. Es una dimensión muy útil para el análisis comparativo. El panel «Regional Billing Process Comparison» utiliza este atributo para comparar KPI como los tiempos de ciclo, los índices de error y las variantes del proceso entre distintas regiones. Esto ayuda a identificar diferencias de rendimiento regionales, descubrir las mejores prácticas de las regiones con mejor rendimiento e impulsar la estandarización de procesos en toda la organización. Por qué es importante Permite realizar análisis comparativos entre distintas áreas geográficas, algo clave para identificar brechas de rendimiento regionales y estandarizar las mejores prácticas. Dónde obtenerlo Estos datos suelen almacenarse en un segmento personalizado o en un campo de clasificación del registro maestro del cliente o del registro de transacción en NetSuite. Ejemplos NorteaméricaEMEAAPAC | |||
| Usuario User | El nombre o ID del usuario que realizó la actividad. | ||
| Descripción Este atributo identifica a la persona empleada o al usuario del sistema responsable de ejecutar un paso concreto del proceso. Puede ser quien creó la factura, la aprobó o aplicó el pago. Analizar el proceso por usuario ayuda a comprender la distribución de la carga de trabajo y el rendimiento individual, así como a identificar necesidades de formación. También puede revelar oportunidades de automatización al mostrar qué actividades manuales realizan más usuarios. Además, es clave para el cumplimiento y el análisis de los registros de auditoría. Por qué es importante Permite analizar la distribución de la carga de trabajo, el rendimiento por usuario y el cumplimiento del proceso, aspectos esenciales para gestionar los recursos y orientar la formación. Dónde obtenerlo Está disponible en la subpestaña System Notes o en campos específicos «Modified By» de la factura y de los registros de transacciones relacionados en NetSuite. Ejemplos Alice SmithBob JohnsonSYSTEM | |||
| Condiciones de pago PaymentTerms | Las condiciones de pago acordadas entre la empresa y el cliente. | ||
| Descripción Payment Terms define cuándo y cómo debe pagar el cliente su factura, por ejemplo, «Net 30» o «Due on receipt». Esta información se utiliza para calcular automáticamente la fecha de vencimiento de la factura. Este atributo es fundamental para el panel «Payment Terms Adherence». Analizar los índices de pago puntual según las distintas condiciones de pago ayuda a evaluar su eficacia. Por ejemplo, puede mostrar si los clientes con condiciones «Net 15» pagan más rápido que aquellos con condiciones «Net 30», lo que aporta información para futuras negociaciones contractuales y políticas de crédito. Por qué es importante Es esencial para analizar la eficacia de las distintas condiciones de pago y su impacto en la puntualidad de los pagos de los clientes. Dónde obtenerlo Corresponde al campo «Terms» del registro de transacción de factura en NetSuite. Ejemplos Neto 30Neto 60Vencimiento contra recepción | |||
| Departamento Department | El departamento interno asociado a la factura. | ||
| Descripción Este atributo representa el departamento interno, como Ventas, Servicios o una línea de negocio específica, responsable de la transacción. Es un segmento de clasificación estándar en NetSuite. Analizar el proceso por departamento permite realizar comparaciones internas y ayuda a identificar si algunos departamentos tienen procesos de facturación más eficientes que otros. También puede revelar variaciones en el cumplimiento del proceso o en la asignación de recursos, lo que proporciona información útil para iniciativas específicas de mejora dentro de determinadas áreas de la organización. Por qué es importante Permite comparar el rendimiento del proceso entre distintos departamentos internos y destacar variaciones y oportunidades para estandarizar los procesos internos. Dónde obtenerlo Corresponde al campo de clasificación «Department», que puede configurarse en el nivel de encabezado o de línea de una transacción Invoice en NetSuite. Ejemplos Ventas - empresasServicios profesionalesHardware | |||
| Días de ventas pendientes de cobro DaysSalesOutstanding | El número de días entre la fecha de la factura y la fecha en que se recibió el pago. | ||
| Descripción Days Sales Outstanding (DSO) es una métrica financiera clave que mide el número medio de días que se tarda en cobrar un pago después de emitir una factura. Este atributo se calcula para cada factura individual, lo que permite realizar un análisis detallado. Aunque suele agregarse como un KPI de alto nivel, disponer del DSO en el nivel de cada factura permite realizar análisis muy útiles. Puede utilizarse para identificar qué clientes, regiones o tipos de factura presentan el DSO más alto. El Dashboard «DSO Trend» utiliza esta métrica para visualizar la eficiencia de los cobros a lo largo del tiempo y proporciona información esencial para gestionar el capital circulante. Por qué es importante Cuantifica la eficiencia de los cobros en el nivel de cada factura y permite analizar en detalle las causas raíz de un DSO elevado y su impacto en el flujo de caja. Dónde obtenerlo Se calcula restando «InvoiceDate» de la marca de tiempo de la actividad «Customer Payment Received». Ejemplos 294562 | |||
| Es retrabajo IsRework | Indicador calculado que identifica las actividades consideradas retrabajo o bucles de corrección. | ||
| Descripción Este indicador booleano se establece como verdadero para las actividades que representan retrabajo sin valor añadido, como «Invoice Corrected» o un segundo evento «Invoice Approved» dentro del mismo caso. Normalmente se obtiene a partir del nombre de la actividad o de la repetición de una actividad. Este atributo es esencial para el Dashboard «Invoice Rework and Rejection Analysis» y el KPI «Invoice Error Rate». Permite cuantificar fácilmente el retrabajo y ayuda a poner de manifiesto los problemas de calidad del proceso. Al filtrar las actividades de retrabajo, los equipos pueden identificar rápidamente las causas raíz de los errores y medir el impacto de las iniciativas de mejora del proceso. Por qué es importante Mide directamente la calidad del proceso al señalar bucles de retrabajo ineficientes y permite analizar las causas raíz y el impacto financiero de los errores de facturación. Dónde obtenerlo Es un atributo derivado que se calcula durante la transformación de datos. Se aplica una lógica para identificar el retrabajo, por ejemplo, marcando nombres de actividad específicos («Invoice Corrected») o actividades repetidas. Ejemplos truefalse | |||
| Es un pago puntual IsOnTimePayment | Indicador que señala si el pago del cliente se recibió en la fecha de vencimiento de la factura o antes. | ||
| Descripción Este indicador booleano calculado compara la marca de tiempo de la actividad «Customer Payment Received» con la «DueDate» de la factura. Se establece como verdadero si el pago se realizó a tiempo o antes, y como falso si se realizó tarde. Este atributo es la base del KPI «On-Time Payment Rate» y del Dashboard «Payment Terms Adherence». Proporciona una medida binaria y clara del comportamiento de pago de los clientes, lo que simplifica el análisis y los informes. También ayuda a identificar rápidamente las tendencias de puntualidad de los pagos y a evaluar la eficacia de las estrategias de cobro. Por qué es importante Proporciona una métrica clara de éxito para la gestión de cobros y respalda directamente el cálculo del KPI «On-Time Payment Rate» y el análisis del comportamiento de los clientes. Dónde obtenerlo Es un atributo calculado. Requiere comparar la marca de tiempo del evento de pago con el atributo «DueDate» en el nivel del caso. Ejemplos truefalse | |||
| Estado de la factura InvoiceStatus | El estado actual de la factura en su ciclo de vida. | ||
| Descripción Este atributo refleja el estado actual de la factura, como «Open», «Paid in Full» o «Voided». Proporciona una instantánea de la fase en la que se encuentra la factura en un momento determinado. El panel «Open Invoices Status Overview» se basa directamente en este atributo. Permite evaluar en tiempo real las cuentas por cobrar, lo que ayuda a los equipos financieros a supervisar los saldos pendientes, gestionar los cobros y prever las entradas de efectivo. Analizar el estado final también ayuda a comprender los resultados del proceso. Por qué es importante Proporciona una instantánea del estado actual de las cuentas por cobrar, lo que permite crear Dashboards que supervisan las facturas abiertas y el avance general de la facturación. Dónde obtenerlo Corresponde al campo «Status» del registro de transacción de factura en NetSuite. Ejemplos AbiertaPagada en su totalidadAnuladaPendiente de aprobación | |||
| Moneda Currency | El código de moneda del importe de la factura. | ||
| Descripción Este atributo especifica la moneda en la que está denominado el importe de la factura, por ejemplo, USD, EUR o GBP. Es un contexto esencial para cualquier valor monetario. En las organizaciones multinacionales, analizar los datos por moneda es importante para comprender el rendimiento financiero en distintos mercados. Garantiza que los valores monetarios se interpreten correctamente y permite agregarlos y compararlos de forma adecuada después de la conversión de moneda, si es necesario. Por qué es importante Proporciona el contexto necesario para todos los valores monetarios, algo fundamental para elaborar informes y análisis financieros precisos, especialmente en operaciones multinacionales. Dónde obtenerlo Corresponde al campo «Currency» del registro de transacción de factura en NetSuite. Ejemplos USDEURGBP | |||
| Número de pedido de venta SalesOrderNumber | El identificador del pedido de venta a partir del cual se generó la factura. | ||
| Descripción Este atributo proporciona un enlace directo al pedido de venta de origen y conecta el proceso de facturación con los procesos anteriores de ventas y cumplimiento. Incluir el número del pedido de venta permite obtener una visión más completa de todo el ciclo Order-to-Cash. Esto permite analizar los problemas de facturación y rastrearlos hasta su origen en el proceso de ventas. Por ejemplo, las correcciones frecuentes de facturas podrían estar relacionadas con errores de introducción de datos en determinados tipos de pedidos de venta. Por qué es importante Conecta el proceso de facturación con el proceso de ventas y permite realizar un análisis más amplio, de extremo a extremo, de Order-to-Cash para identificar las causas raíz de los problemas de facturación. Dónde obtenerlo Se encuentra en el campo «Created From» o en la subpestaña «Related Records» de una transacción Invoice en NetSuite. Ejemplos SO-0009876SO-0009877SO-0009878 | |||
Actividades de Order to Cash: facturación y emisión de facturas
| Actividad | Descripción | ||
|---|---|---|---|
| Factura aprobada | La factura se ha aprobado formalmente y está lista para enviarse al cliente. Se captura cuando el estado de aprobación cambia de «Pending Approval» a «Approved», normalmente mediante una acción de Workflow. | ||
| Por qué es importante Un hito clave que permite enviar la factura al cliente. Es fundamental para medir los tiempos del ciclo de aprobación y calcular el KPI «Automated Billing Ratio». Dónde obtenerlo Se infiere a partir del cambio del campo «Approval Status» del registro de la factura a «Approved». La marca de tiempo exacta se registra en las notas del sistema de la transacción. Recopilar Se infiere a partir del cambio del campo «Approval Status» a «Approved» en las notas del sistema. Tipo de evento inferred | |||
| Factura creada | Marca la creación oficial del registro de transacción de la factura en NetSuite. Este evento es el punto de inicio del proceso de facturación para cada número de factura único y se captura a partir de la marca de tiempo de creación de la transacción. | ||
| Por qué es importante Este es el evento de inicio principal del proceso de facturación. Analizar el tiempo transcurrido entre este evento y los demás permite evaluar la eficiencia general del proceso y establece la línea base del KPI Invoice Generation Cycle Time. Dónde obtenerlo Se captura a partir de la marca de tiempo «Date Created» del registro de transacción de la factura. Las notas del sistema de NetSuite para la factura también registran explícitamente el evento de creación y el usuario. Recopilar Evento registrado al crear el registro de transacción de la factura. Tipo de evento explicit | |||
| Factura enviada al cliente | Indica que la factura se ha enviado al cliente, normalmente por correo electrónico. Este evento se captura registrando cuándo un usuario ejecuta la acción «Email» desde el registro de la factura. | ||
| Por qué es importante Marca el inicio del periodo de cobro al cliente y es el principal punto de partida para calcular los Days Sales Outstanding (DSO). Dónde obtenerlo Se infiere a partir de la cumplimentación del campo «Date Last Emailed» del registro de la factura. Como alternativa, puede capturarse mediante la creación de un registro de mensaje de correo en la subpestaña Communication. Recopilar Se infiere a partir de la cumplimentación de «Date Last Emailed» o de la creación de un registro de comunicación. Tipo de evento inferred | |||
| Factura pagada en su totalidad | El estado de la factura ha cambiado a «Paid In Full», lo que indica que su saldo es ahora cero. Es la conclusión satisfactoria del ciclo de facturación y cobro de la factura. | ||
| Por qué es importante Es el principal evento final satisfactorio del proceso. Analizar el tiempo total hasta alcanzar este estado proporciona el tiempo de ciclo integral del ciclo de conversión de efectivo. Dónde obtenerlo Se infiere a partir del cambio del campo «Status» del registro de la factura a «Paid In Full». La marca de tiempo de este cambio de estado está disponible en las notas del sistema de la transacción. Recopilar Se infiere a partir del cambio del campo «Status» a «Paid In Full» en las notas del sistema. Tipo de evento inferred | |||
| Pago del cliente recibido | Se ha recibido un pago del cliente y se ha registrado en el sistema. Se captura mediante la creación de una transacción «Customer Payment» en NetSuite, que puede aplicarse a una o varias facturas. | ||
| Por qué es importante Marca la recepción del efectivo, pero no necesariamente su aplicación a una factura concreta. Es el primer paso del proceso de aplicación de efectivo y un evento clave para calcular el DSO. Dónde obtenerlo Se captura a partir de la fecha de creación del registro de transacción «Customer Payment». La conexión con la factura se establece en la subpestaña «Apply» del pago. Recopilar Creación de un registro de transacción Customer Payment. Tipo de evento explicit | |||
| Factura anulada | La factura se ha anulado, cancelándola efectivamente y revirtiendo cualquier impacto en el libro mayor. Esta acción suele realizarse en facturas creadas por error antes de que se paguen. | ||
| Por qué es importante Representa una excepción del proceso y un estado terminal. Comprender por qué se anulan las facturas puede revelar errores de introducción de datos o del proceso que deben corregirse en etapas anteriores. Dónde obtenerlo Es una acción explícita del usuario. Puede capturarse en las notas del sistema del registro de la factura, que indican cuándo y quién anuló la transacción. Recopilar Acción explícita «Void» registrada en las notas del sistema de la factura. Tipo de evento explicit | |||
| Factura cerrada | La transacción de la factura se ha cerrado, a menudo como parte del proceso contable de cierre de periodo. Esta acción impide realizar más cambios en la transacción una vez pagada y conciliada por completo. | ||
| Por qué es importante Aunque suele producirse después de «Paid In Full», puede ser un paso administrativo final. Analizar los retrasos entre el pago y el cierre podría afectar a la puntualidad de los informes financieros. Dónde obtenerlo Se infiere a partir del cambio del campo «Status» a «Closed» o a un estado similar. La marca de tiempo de este cambio se captura en las notas del sistema. Recopilar Se infiere a partir del cambio del campo «Status» registrado en las notas del sistema. Tipo de evento inferred | |||
| Factura enviada para aprobación | Representa el cambio de estado de la factura a «Pending Approval». Este evento se captura cuando un usuario envía la factura a un Workflow de aprobación configurado, una personalización habitual. | ||
| Por qué es importante Esta actividad identifica el inicio de un posible cuello de botella de aprobación. El tiempo de espera hasta la aprobación es un componente clave del tiempo total del ciclo de procesamiento de la factura. Dónde obtenerlo Se infiere a partir del cambio del campo «Approval Status» del registro de la factura a «Pending Approval». La marca de tiempo de este cambio se encuentra en el registro de auditoría de las notas del sistema de la factura. Recopilar Se infiere a partir del cambio del campo «Approval Status» registrado en las notas del sistema. Tipo de evento inferred | |||
| Fecha de vencimiento del pago alcanzada | Evento calculado que se produce cuando la fecha actual coincide con la fecha de vencimiento de la factura. No corresponde a una acción directa del usuario o del sistema, sino que se deriva de los datos existentes durante el análisis. | ||
| Por qué es importante Actúa como referencia clave para medir la puntualidad de los pagos. Es esencial para calcular el KPI «On-Time Payment Rate» y analizar el comportamiento de pago de los clientes. Dónde obtenerlo No es un evento explícito en NetSuite. Se calcula comparando la marca de tiempo del registro de eventos con el campo «Due Date» del registro de transacción de la factura. Recopilar Se calcula cuando la marca de tiempo del evento coincide con el campo «Due Date» de la factura. Tipo de evento calculated | |||
| Nota de crédito creada | Se ha creado y aplicado una transacción de nota de crédito a la factura, lo que reduce el saldo pendiente. Normalmente indica una devolución de producto, una reclamación sobre el servicio o una corrección de precios. | ||
| Por qué es importante Pone de relieve el retrabajo, los problemas de calidad o las disputas con clientes. Una frecuencia elevada puede indicar problemas subyacentes y es un elemento clave del Dashboard «Invoice Rework and Rejection Analysis». Dónde obtenerlo Se captura a partir de la creación de una transacción de nota de crédito. El vínculo con la factura original se encuentra en el campo «Created From» o en la subpestaña «Apply» de la nota de crédito. Recopilar Creación de un registro de nota de crédito vinculado a la factura original. Tipo de evento explicit | |||
| Pago aplicado a la factura | El pago recibido del cliente se ha aplicado específicamente a esta factura, reduciendo el importe pendiente. Se registra cuando se guarda la aplicación en el registro Customer Payment. | ||
| Por qué es importante Es el vínculo crucial entre la recepción del efectivo y la liquidación de la factura. La duración entre «Payment Received» y este evento define el KPI «Cash Application Cycle Time». Dónde obtenerlo Se captura a partir de las notas del sistema o del registro de auditoría de la transacción Customer Payment, concretamente cuando se guarda la aplicación a la línea de la factura. La marca de tiempo de esta aplicación es clave. Recopilar Se registra cuando el registro Customer Payment se guarda con una aplicación a la factura. Tipo de evento explicit | |||
| Recordatorio de pago emitido | Se ha enviado al cliente una comunicación sobre un pago pendiente. Se captura como una actividad registrada o un correo enviado desde el registro de la factura o del cliente, a menudo mediante una solución de gestión de cobros. | ||
| Por qué es importante Esencial para evaluar la eficacia de las estrategias de cobro. Analizar el impacto de esta actividad en los pagos posteriores ayuda a optimizar la frecuencia y el momento de los recordatorios. Dónde obtenerlo Se captura a partir de la creación de un registro de correo en la subpestaña Communication > Messages del registro de la factura o del cliente. Las soluciones automatizadas de gestión de cobros también pueden registrarlos como registros personalizados o tareas. Recopilar Se registra como un correo electrónico o una actividad asociada a la factura. Tipo de evento explicit | |||
Guías de extracción
Pasos
- Inicie sesión en NetSuite: Acceda a su cuenta de NetSuite utilizando un rol con permisos suficientes para crear y ejecutar búsquedas guardadas en registros de transacciones.
- Vaya a las búsquedas guardadas: Vaya a Reports > Saved Searches > All Saved Searches > New. Seleccione «Transacción» en la lista de tipos de búsqueda. Esta será la base para crear varias búsquedas, una para cada tipo de evento.
- Cree la búsqueda «Invoice Created»: Esta es la búsqueda principal que captura la creación de facturas.
- En la pestaña «Criteria», dentro de «Standard», establezca el filtro «Type» en «is Invoice».
- Añada otro filtro para «Main Line» y establézcalo en «is true» para obtener un registro por factura.
- En la pestaña «Results», añada las columnas necesarias. Utilice fórmulas para crear campos estandarizados como «ActivityName». Por ejemplo, añada un campo «Formula (Text)» con la fórmula
_UTF8'Invoice Created'.
- Cree búsquedas para los cambios de estado (aprobación, pago, anulación y cierre): Muchas actividades son cambios de estado. La forma más fiable de capturar la marca de tiempo exacta es utilizar System Notes.
- Cree una búsqueda guardada de Transaction nueva.
- En la pestaña «Criteria», establezca «Type» en «is Invoice».
- En la subpestaña «Standard», añada el filtro «System Notes : Field» y seleccione el campo de estado correspondiente, por ejemplo, «Approval Status».
- Añada otro filtro «System Notes : New Value» y establézcalo en el estado de destino, por ejemplo, «Aprobado».
- En la pestaña «Results», asigne «System Notes : Date» a
EventTimestampy «System Notes : Set by» aUsuario. - Repita este proceso para cada actividad basada en estados: «Invoice Submitted for Approval», «Invoice Approved», «Invoice Paid In Full», «Invoice Voided» e «Invoice Closed», ajustando los filtros de campo y valor según corresponda.
- Cree la búsqueda «Invoice Sent to Customer»: Este evento suele capturarse mediante el seguimiento de los mensajes de correo electrónico enviados desde el registro de la factura.
- Cree una búsqueda guardada de Transaction nueva con «Type» establecido en «is Invoice».
- En la pestaña «Criteria», dentro de «Related Records», añada un filtro para «Messages : Date Sent» y establézcalo en «is not empty».
- En la pestaña «Results», asigne «Messages : Date Sent» a
EventTimestampy «Messages : Author» aUsuario.
- Cree búsquedas para las actividades de pagos y notas de crédito: Estas actividades implican tipos de transacción independientes vinculados a la factura.
- Para «Customer Payment Received», cree una búsqueda cuyo «Type» sea «Customer Payment». Capture la fecha de creación como marca de tiempo del evento.
- Para «Payment Applied To Invoice», utilice la misma búsqueda de «Customer Payment», pero únala a los campos «Applied To Transaction». La «Date Created» de la transacción de pago sirve como marca de tiempo. Obtendrá una fila por cada aplicación a una factura.
- Para «Credit Memo Created», cree una búsqueda cuyo «Type» sea «Credit Memo» y vincúlela al campo «Created From» para obtener el número de la factura original.
- Ejecute y exporte cada búsqueda guardada: Ejecute cada búsqueda guardada que haya creado. En la página de resultados, haga clic en el icono de exportación (CSV, Excel o PDF) y elija CSV. Si el conjunto de resultados supera el límite de exportación de NetSuite, es posible que deba exportarlo por lotes.
- Combine y transforme los datos: Consolide todos los archivos CSV exportados en un único archivo mediante una herramienta como Microsoft Excel, un script de Python o una herramienta de preparación de datos.
- Obtenga el evento «Payment Due Date Reached»: En el archivo de datos combinado, cree una fila nueva para cada evento «Invoice Created». Establezca
ActivityNameen «Payment Due Date Reached»,EventTimestampen el valor del campoDueDatede la factura y copie los demás atributos relevantes de la factura. - Finalice el registro de eventos: Estandarice todos los encabezados de columna para que coincidan con el esquema obligatorio, por ejemplo,
InvoiceNumber,ActivityNameyEventTimestamp. Asegúrese de que los formatos de marca de tiempo sean coherentes. Añada las columnasSourceSystemyLastDataUpdatecon valores estáticos para este lote de extracción. Guarde el archivo consolidado final como CSV para cargarlo.
Configuración
- Requisitos previos: Se necesita un rol de usuario con permisos para crear, editar y ejecutar Saved Searches de tipo «Transaction». También es necesario poder consultar los registros de Invoice, Customer Payment, Credit Memo y System Notes.
- Tipo de búsqueda: El tipo de búsqueda principal utilizado para todas las extracciones es «Transaction». Este tipo permite acceder a todos los registros y relaciones necesarios.
- Filtrado por intervalo de fechas: Para gestionar el rendimiento y el volumen de datos, aplique un filtro de intervalo de fechas a cada búsqueda. Para el análisis inicial, se recomienda filtrar «Date Created» por un periodo de los últimos 3 a 6 meses.
- Filtro Main Line: Utilice el criterio «Main Line» establecido como «true» para eventos del nivel de encabezado del documento, como «Invoice Created». Establézcalo como «false» cuando necesite analizar detalles de partidas, algo que no es necesario para este proceso.
- System Notes: La captura de los cambios de estado depende en gran medida de System Notes. Asegúrese de que la auditoría esté habilitada para campos de transacción clave, como «Status» y «Approval Status», en la configuración de NetSuite (Setup > Company > Enable Features > SuiteCloud > SuiteAudit Trail).
- Consideraciones de rendimiento: Las búsquedas complejas con muchas uniones y campos de fórmula en un intervalo de fechas amplio pueden tardar en ejecutarse en la interfaz de NetSuite. Se recomienda ejecutar y exportar estas búsquedas fuera de las horas punta. Si una búsqueda agota el tiempo de espera, reduzca el intervalo de fechas y exporte los datos en lotes más pequeños.
a Consulta de ejemplo sql
/*
This section describes the configuration for multiple NetSuite Saved Searches needed to generate the complete event log. Each block represents a separate Saved Search that must be created in the UI, exported, and then combined externally.
*/
-- Search 1: Invoice Created
Activity Name: 'Invoice Created'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Main Line is true
Results Columns (Mapped to Event Log Attributes):
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Created'
- EventTimestamp: Date Created
- User: Created By
- InvoiceDate: Date
- DueDate: Due Date
- InvoiceTotalAmount: Amount (Gross)
- CustomerName: Name
-- Search 2: Invoice Submitted for Approval
Activity Name: 'Invoice Submitted for Approval'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Approval Status
- System Notes : New Value is [Your 'Pending Approval' status]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Submitted for Approval'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 3: Invoice Approved
Activity Name: 'Invoice Approved'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Approval Status
- System Notes : New Value is [Your 'Approved' status]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Approved'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 4: Invoice Sent to Customer
Activity Name: 'Invoice Sent to Customer'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Messages : Date Sent is not empty
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Sent to Customer'
- EventTimestamp: Messages : Date Sent (use Maximum summary type if multiple)
- User: Messages : Author (use Maximum summary type)
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 5: Payment Reminder Issued
Activity Name: 'Payment Reminder Issued'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- User Notes : Note contains [Your dunning/reminder keyword]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Payment Reminder Issued'
- EventTimestamp: User Notes : Date
- User: User Notes : Author
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 6: Credit Memo Created
Activity Name: 'Credit Memo Created'
Saved Search Type: Transaction
Criteria:
- Type is Credit Memo
- Main Line is true
Results Columns:
- InvoiceNumber: Created From : Document Number
- ActivityName: Formula (Text) = 'Credit Memo Created'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 7: Customer Payment Received
Activity Name: 'Customer Payment Received'
Saved Search Type: Transaction
Criteria:
- Type is Customer Payment
- Main Line is true
Results Columns:
- InvoiceNumber: Applied to Transaction : Document Number
- ActivityName: Formula (Text) = 'Customer Payment Received'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
-- Search 8: Payment Applied To Invoice
Activity Name: 'Payment Applied To Invoice'
Saved Search Type: Transaction
Criteria:
- Type is Customer Payment
- Main Line is false
Results Columns:
- InvoiceNumber: Applied to Transaction : Document Number
- ActivityName: Formula (Text) = 'Payment Applied To Invoice'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
-- Search 9: Invoice Paid In Full
Activity Name: 'Invoice Paid In Full'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Status
- System Notes : New Value is Paid In Full
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Paid In Full'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 10: Invoice Voided
Activity Name: 'Invoice Voided'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Status is Invoice : Voided
- System Notes : Field is Status
- System Notes : New Value is Voided
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Voided'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
-- Search 11: Invoice Closed
Activity Name: 'Invoice Closed'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Status
- System Notes : New Value contains Closed
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Closed'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Event to be Derived Post-Extraction: Payment Due Date Reached
/*
This event is not extracted directly. After combining all other CSVs, create a new row for each unique invoice.
Set ActivityName to 'Payment Due Date Reached'.
Set EventTimestamp to the DueDate value from the 'Invoice Created' event for that invoice.
Copy other attributes like InvoiceNumber, CustomerName, etc.
*/ Pasos
- Requisito previo: habilite SuiteAnalytics Connect: Asegúrese de que el módulo SuiteAnalytics Connect tenga licencia y esté habilitado en su instancia de NetSuite. Normalmente, un administrador de NetSuite realiza esta configuración en Setup > Company > Enable Features > Analytics.
- Descargue y configure el controlador ODBC: Vaya al Dashboard de inicio de NetSuite y localice el portlet «Settings». Haga clic en el enlace «Set Up SuiteAnalytics Connect» para descargar el controlador ODBC adecuado para su sistema operativo. Siga las instrucciones de instalación de NetSuite para instalar y configurar el controlador, e introduzca el host del servicio, el puerto, el Account ID, el Role ID, el correo electrónico y la contraseña.
- Establezca la conexión con la base de datos: Utilice una herramienta cliente SQL compatible con conexiones ODBC, como DBeaver, Tableau o Power BI. Cree una conexión ODBC nueva mediante el controlador que configuró en el paso anterior. Pruebe la conexión para confirmar que puede autenticarse correctamente y acceder a la base de datos de réplica de solo lectura de NetSuite.
- Prepare la consulta SQL: Copie la consulta SQL completa incluida en la sección «Query» de este documento. Esta consulta está diseñada para extraer todas las actividades y atributos necesarios para el proceso de facturación Order to Cash.
- Establezca los parámetros de la consulta: Antes de ejecutarla, localice los valores de marcador de posición de la consulta. Debe sustituir
'YYYY-MM-DD'por las fechas de inicio y fin que desee para el periodo de extracción. También debe sustituir[Your Subsidiary ID]por el ID interno de la subsidiaria de NetSuite que desea analizar. - Ejecute la consulta: Ejecute la consulta modificada en su cliente SQL. El tiempo de ejecución variará según el intervalo de fechas y el volumen de transacciones de su cuenta de NetSuite.
- Revise los resultados: Cuando finalice la consulta, se devolverá una tabla plana que representa el registro de eventos. Cada fila corresponde a una actividad específica del ciclo de vida de la factura. Revise los datos para comprobar que estén completos y sean precisos.
- Exporte el registro de eventos: Exporte los resultados de la consulta desde su cliente SQL a un archivo CSV. Asegúrese de que el archivo utilice codificación UTF-8 para evitar problemas con los caracteres.
- Prepare la carga: Antes de cargar los datos en una herramienta de Process Mining, confirme que los encabezados de columna coincidan con los nombres de atributo requeridos, como InvoiceNumber, ActivityName y EventTimestamp. Compruebe que los formatos de fecha y hora sean coherentes.
Configuración
- Licencia de SuiteAnalytics Connect: Es obligatoria una licencia válida del módulo SuiteAnalytics Connect para acceder a la base de datos réplica de lectura de NetSuite. Sin ella, no es posible acceder directamente mediante SQL.
- Rol y usuario dedicados: Se recomienda encarecidamente crear un rol de NetSuite dedicado, con los permisos adecuados para SuiteAnalytics Connect. Este rol debe tener acceso de solo lectura a los registros necesarios, incluidos Transactions, Customers y System Notes. Asigne un usuario dedicado a este rol para realizar la extracción y garantizar la seguridad y la trazabilidad.
- Filtrado por intervalo de fechas: La consulta proporcionada incluye una cláusula
WHEREsobre la fecha de creación de la factura (Transaction.TRANDATE). Para las extracciones iniciales, se recomienda comenzar con un intervalo más corto, por ejemplo, los últimos 3 a 6 meses, para controlar el rendimiento y el volumen de datos. Por ejemplo:AND T.TRANDATE BETWEEN '2023-01-01' AND '2023-06-30'. - Filtrado por subsidiaria: En las cuentas con varias subsidiarias, filtrar por la subsidiaria específica es fundamental tanto para el rendimiento como para la relevancia de los datos. La consulta incluye el marcador de posición
WHERE T.SUBSIDIARY_ID = [Your Subsidiary ID], que debe configurarse. - Actualización de los datos: La base de datos de SuiteAnalytics Connect es una réplica de lectura. Los datos suelen actualizarse varias veces por hora, pero no están disponibles en tiempo real. Tenga en cuenta que puede existir un retraso de hasta varias horas entre la creación de una transacción en NetSuite y su aparición en la base de datos de Connect.
a Consulta de ejemplo sql
WITH Invoices AS (
SELECT
T.TRANSACTION_ID,
T.TRANID AS InvoiceNumber,
T.TRANDATE AS InvoiceDate,
T.DUEDATE AS DueDate,
T.FOREIGN_TOTAL AS InvoiceTotalAmount,
C.COMPANYNAME AS CustomerName,
BUILTIN.DF(C.LOCATION) AS Region,
T.CREATED_DATE AS InvoiceCreationDate,
CREATOR.FIRST_NAME || ' ' || CREATOR.LAST_NAME AS CreatorUser
FROM
TRANSACTIONS T
JOIN
CUSTOMERS C ON T.ENTITY_ID = C.CUSTOMER_ID
LEFT JOIN
EMPLOYEES CREATOR ON T.CREATED_BY_ID = CREATOR.EMPLOYEE_ID
WHERE
T.TRANSACTION_TYPE = 'Invoice'
AND T.TRANDATE BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD')
-- AND T.SUBSIDIARY_ID = [Your Subsidiary ID] -- Add your subsidiary filter if needed
)
-- 1. Invoice Created
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Invoice Created' AS "ActivityName",
I.InvoiceCreationDate AS "EventTimestamp",
I.InvoiceCreationDate AS "EventEndTime",
I.CreatorUser AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN I.CreatorUser LIKE '%System%' THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
UNION ALL
-- 2. Invoice Submitted for Approval & 3. Invoice Approved
SELECT
I.InvoiceNumber AS "InvoiceNumber",
CASE WHEN SN.NEW_VALUE = 'Pending Approval' THEN 'Invoice Submitted for Approval' ELSE 'Invoice Approved' END AS "ActivityName",
SN.DATE_CREATED AS "EventTimestamp",
SN.DATE_CREATED AS "EventEndTime",
SN_AUTHOR.FIRST_NAME || ' ' || SN_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN SN.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
SYSTEM_NOTES SN ON I.TRANSACTION_ID = SN.TRANSACTION_ID
LEFT JOIN
EMPLOYEES SN_AUTHOR ON SN.AUTHOR_ID = SN_AUTHOR.EMPLOYEE_ID
WHERE
SN.FIELD = 'TRANSACTION.APPROVALSTATUS' AND SN.NEW_VALUE IN ('Pending Approval', 'Approved')
UNION ALL
-- 4. Invoice Sent to Customer
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Invoice Sent to Customer' AS "ActivityName",
M.MESSAGE_DATE AS "EventTimestamp",
M.MESSAGE_DATE AS "EventEndTime",
MSG_AUTHOR.FIRST_NAME || ' ' || MSG_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
MESSAGES M ON I.TRANSACTION_ID = M.TRANSACTION_ID
LEFT JOIN
EMPLOYEES MSG_AUTHOR ON M.AUTHOR_ID = MSG_AUTHOR.EMPLOYEE_ID
WHERE
M.INCOMING = 'F' -- Indicates an outgoing message
UNION ALL
-- 5. Payment Due Date Reached
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Payment Due Date Reached' AS "ActivityName",
I.DueDate AS "EventTimestamp",
I.DueDate AS "EventEndTime",
'System' AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
1 AS "IsAutomated"
FROM
Invoices I
WHERE
I.DueDate IS NOT NULL AND I.DueDate < SYSDATE
UNION ALL
-- 6. Payment Reminder Issued (based on Messages table, requires a specific subject line convention)
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Payment Reminder Issued' AS "ActivityName",
M.MESSAGE_DATE AS "EventTimestamp",
M.MESSAGE_DATE AS "EventEndTime",
MSG_AUTHOR.FIRST_NAME || ' ' || MSG_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN M.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
MESSAGES M ON I.TRANSACTION_ID = M.TRANSACTION_ID
LEFT JOIN
EMPLOYEES MSG_AUTHOR ON M.AUTHOR_ID = MSG_AUTHOR.EMPLOYEE_ID
WHERE
M.INCOMING = 'F' AND UPPER(M.SUBJECT) LIKE '%PAYMENT REMINDER%'
UNION ALL
-- 7. Credit Memo Created & Applied
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Credit Memo Created' AS "ActivityName",
CM.CREATED_DATE AS "EventTimestamp",
CM.CREATED_DATE AS "EventEndTime",
CM_CREATOR.FIRST_NAME || ' ' || CM_CREATOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
TRANSACTION_LINES T_LINES ON I.TRANSACTION_ID = T_LINES.APPLIED_TO_TRANSACTION_ID
JOIN
TRANSACTIONS CM ON T_LINES.TRANSACTION_ID = CM.TRANSACTION_ID
LEFT JOIN
EMPLOYEES CM_CREATOR ON CM.CREATED_BY_ID = CM_CREATOR.EMPLOYEE_ID
WHERE
CM.TRANSACTION_TYPE = 'Credit Memo'
UNION ALL
-- 8. Customer Payment Received & 9. Payment Applied to Invoice
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Customer Payment Received' AS "ActivityName", -- Can also create a separate 'Payment Applied' event if needed
PAYMENT.CREATED_DATE AS "EventTimestamp",
PAYMENT.CREATED_DATE AS "EventEndTime",
PMT_CREATOR.FIRST_NAME || ' ' || PMT_CREATOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
TRANSACTION_LINES T_LINES ON I.TRANSACTION_ID = T_LINES.APPLIED_TO_TRANSACTION_ID
JOIN
TRANSACTIONS PAYMENT ON T_LINES.TRANSACTION_ID = PAYMENT.TRANSACTION_ID
LEFT JOIN
EMPLOYEES PMT_CREATOR ON PAYMENT.CREATED_BY_ID = PMT_CREATOR.EMPLOYEE_ID
WHERE
PAYMENT.TRANSACTION_TYPE = 'Customer Payment'
UNION ALL
-- 10. Invoice Paid In Full, 11. Invoice Voided, 12. Invoice Closed
SELECT
I.InvoiceNumber AS "InvoiceNumber",
CASE
WHEN SN.NEW_VALUE_ID = 'Invoice:B' THEN 'Invoice Paid In Full' -- 'B' is status 'Paid In Full'
WHEN SN.FIELD = 'TRANSACTION.VOIDED' AND SN.NEW_VALUE = 'T' THEN 'Invoice Voided'
WHEN SN.FIELD = 'TRANSACTION.CLOSED' AND SN.NEW_VALUE = 'T' THEN 'Invoice Closed'
END AS "ActivityName",
SN.DATE_CREATED AS "EventTimestamp",
SN.DATE_CREATED AS "EventEndTime",
SN_AUTHOR.FIRST_NAME || ' ' || SN_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN SN.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
SYSTEM_NOTES SN ON I.TRANSACTION_ID = SN.TRANSACTION_ID
LEFT JOIN
EMPLOYEES SN_AUTHOR ON SN.AUTHOR_ID = SN_AUTHOR.EMPLOYEE_ID
WHERE
(SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE_ID = 'Invoice:B')
OR (SN.FIELD = 'TRANSACTION.VOIDED' AND SN.NEW_VALUE = 'T')
OR (SN.FIELD = 'TRANSACTION.CLOSED' AND SN.NEW_VALUE = 'T'); ¿Listo para empezar?
Utilice esta plantilla para poner en marcha su iniciativa de Process Mining y obtener información útil sobre sus operaciones de facturación y emisión de facturas. Empiece hoy mismo a optimizar su proceso de Order-to-Cash.
Optimice ahora su facturación y emisión de facturas en NetSuite para acelerar el flujo de caja
Reduzca un 30 % el tiempo del ciclo de facturación en NetSuite y mejore su flujo de caja.
No necesita tarjeta de crédito. Configuración en minutos.