Votre modèle de données pour la facturation et l’émission de factures, du processus commande à encaissement
Votre modèle de données pour la facturation et l’émission de factures, du processus commande à encaissement
- Attributs recommandés à recueillir
- Activités clés à suivre
- Guide d’extraction pour NetSuite
Attributs du processus commande à encaissement : facturation et émission de factures
| Nom | Description | ||
|---|---|---|---|
| Horodatage de l’événement EventTimestamp | Date et heure exactes auxquelles une activité ou un événement précis s’est produit. | ||
| Description Cet attribut indique le moment exact où une activité a eu lieu. Il est indispensable pour ordonner les événements chronologiquement et effectuer toute analyse temporelle. En Process Mining, l’horodatage de l’événement sert à calculer les temps de cycle entre les activités, la durée des cas et les temps d’attente. Il est essentiel pour repérer les goulots d’étranglement, mesurer les performances du processus au regard des SLA et comprendre son déroulement dans le temps. Il permet notamment de calculer le temps de cycle de génération des factures et le délai moyen de paiement client (DSO). Pourquoi est-ce important ? Il établit l’ordre chronologique des événements, indispensable au calcul de toutes les métriques de durée, au repérage des goulots d’étranglement et à l’analyse des performances du processus dans le temps. Où trouver ces données Dans NetSuite, les horodatages figurent généralement dans les notes système, les pistes d’audit ou les champs « Date Created » des enregistrements associés à chaque transaction de facture. Exemples 2023-10-26T10:00:00Z2023-10-27T14:30:00Z2023-11-15T09:05:00Z | |||
| Nom de l’activité ActivityName | Nom de l’événement métier survenu à un moment précis du cycle de vie de la facture. | ||
| Description Le nom de l’activité désigne une étape ou un événement précis du processus de facturation, par exemple « Facture créée », « Facture approuvée » ou « Paiement du client reçu ». Ces activités constituent les étapes successives de la cartographie du processus. L’analyse de leur séquence et de leur fréquence est fondamentale en Process Mining. Elle permet de visualiser le déroulement réel du processus, de repérer les parcours fréquents et rares (variantes) et d’identifier les activités répétées, qui peuvent signaler des reprises ou des inefficacités. Pourquoi est-ce important ? Cet attribut est indispensable à la création de la cartographie du processus et permet de visualiser et d’analyser les différentes étapes et les parcours d’une facture. Où trouver ces données Déduit des journaux système, des changements de statut ou des enregistrements d’événements associés à la transaction Invoice dans NetSuite. Il faut souvent associer les changements de statut des transactions ou la création d’enregistrements associés à des noms d’activité définis. Exemples Facture crééeFacture approuvéePaiement du client reçuFacture intégralement payée | |||
| Numéro de facture InvoiceNumber | Identifiant unique de chaque facture, utilisé comme identifiant principal du cas dans le processus de facturation. | ||
| Description Le numéro de facture est au cœur de l’analyse du processus de facturation : il identifie chaque facture de sa création à sa clôture. Il regroupe toutes les activités associées, comme l’approbation, l’envoi et l’affectation du paiement, au sein d’un même cas. Dans le Process Mining, l’analyse du parcours de chaque numéro de facture donne une vue complète du cycle de facturation. Elle permet de repérer les variantes du processus, les goulots d’étranglement et les écarts par rapport à la procédure standard, afin d’améliorer la trésorerie et l’efficacité opérationnelle. Pourquoi est-ce important ? Cet identifiant est indispensable pour suivre le cycle de vie complet de chaque facture, reconstituer l’ensemble du processus de facturation et analyser ses performances en détail. Où trouver ces données Il s’agit généralement du champ « Transaction ID » ou d’un champ équivalent contenant un identifiant unique dans l’enregistrement de transaction Invoice de NetSuite. Exemples INV-0012345INV-0012346INV-0012347 | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage de la dernière actualisation des données depuis le système source. | ||
| Description Cet attribut indique la date de la dernière mise à jour du jeu de données. Il permet de situer dans le temps l’analyse du processus et d’en évaluer la pertinence. Les analystes et les responsables métier s’en servent pour vérifier si les analyses reflètent la situation opérationnelle la plus récente. Ces métadonnées sont essentielles dans tout Dashboard ou rapport : elles indiquent l’ancienneté des données et évitent de les interpréter à tort comme des données en temps réel. Pourquoi est-ce important ? Il renseigne les utilisateurs sur l’actualité des données, afin qu’ils connaissent la période couverte par l’analyse et puissent en évaluer la pertinence. Où trouver ces données Cet horodatage est généré et enregistré par l’outil ou le pipeline d’extraction des données au moment de leur actualisation. Exemples 2024-05-21T02:00:00Z | |||
| Système source SourceSystem | Système depuis lequel les données ont été extraites. | ||
| Description Cet attribut indique l’origine des données du processus. Dans cette vue, sa valeur serait toujours « NetSuite ». Dans un contexte analytique plus large, notamment dans les organisations qui utilisent plusieurs ERP ou des systèmes intégrés, cet attribut est essentiel pour assurer la traçabilité et la gouvernance des données. Il permet de distinguer les processus qui s’étendent sur plusieurs plateformes et d’attribuer correctement l’analyse au système de référence concerné. Pourquoi est-ce important ? Il précise l’origine des données et contribue à leur gouvernance, en particulier lorsque plusieurs systèmes sont intégrés. Où trouver ces données Il s’agit d’une valeur statique (« NetSuite »), ajoutée lors de l’extraction et de la transformation des données. Exemples NetSuite | |||
| Automatisé IsAutomated | Indique si une activité a été exécutée automatiquement par le système. | ||
| Description Cet attribut booléen distingue les activités effectuées manuellement par un utilisateur de celles exécutées automatiquement par un flux de travail système, un script ou une intégration. Il permet de mesurer le degré d’automatisation du processus de facturation et contribue directement au KPI « Taux de facturation automatisée ». En filtrant les activités automatisées ou manuelles, les analystes peuvent repérer les goulots d’étranglement liés aux interventions manuelles et déterminer où renforcer l’automatisation, réduire les erreurs humaines et améliorer l’efficacité. Pourquoi est-ce important ? Il permet de mesurer le degré d’automatisation du processus et de repérer les possibilités de réduire les tâches manuelles et d’améliorer l’efficacité. Où trouver ces données Cet attribut est généralement déterminé à partir de l’utilisateur associé à une activité. Les événements déclenchés par des utilisateurs nommés « SYSTEM », « flux de travail » ou « Integration » sont considérés comme automatisés. Exemples truefalse | |||
| Date d’échéance DueDate | Date à laquelle le paiement de la facture doit être effectué. | ||
| Description La date d’échéance est calculée à partir de la date de la facture et des conditions de paiement convenues. Elle correspond à la date limite à laquelle le client doit payer pour que son paiement ne soit pas considéré comme tardif. Cet attribut est essentiel au suivi des comptes clients et à la gestion de la trésorerie. Il sert de référence pour calculer l’indicateur de taux de paiement à temps et analyser les comportements de paiement des clients. Le suivi des retards permet de repérer les clients qui paient souvent après l’échéance et d’évaluer l’efficacité des stratégies de recouvrement. Pourquoi est-ce important ? Il est essentiel pour mesurer le respect des délais de paiement et analyser les comportements des clients. Il contribue directement au recouvrement et aux prévisions de trésorerie. Où trouver ces données Correspond au champ « Due Date » (duedate) de l’enregistrement de transaction Invoice dans NetSuite. Exemples 2023-11-252023-11-262023-12-15 | |||
| Date de la facture InvoiceDate | Date officielle de la facture telle qu’elle a été remise au client. | ||
| Description La date de la facture, ou date de transaction, sert de point de départ à de nombreux calculs financiers liés à la facturation. C’est généralement à partir de cette date que sont calculées les conditions et les échéances de paiement. Dans l’analyse, elle sert de référence principale pour calculer des indicateurs financiers clés, comme le délai moyen de paiement client (DSO) et l’ancienneté des factures. Elle permet aussi de comparer les performances de facturation sur différentes périodes, par exemple d’un mois ou d’une année à l’autre. Pourquoi est-ce important ? Cette date sert de référence à des indicateurs financiers essentiels, comme le délai moyen de paiement client (DSO) et l’ancienneté des factures, et influe directement sur l’analyse du fonds de roulement. Où trouver ces données Correspond au champ « Date » (trandate) de l’enregistrement de transaction Invoice dans NetSuite. Exemples 2023-10-262023-10-272023-11-15 | |||
| Heure de fin de l’événement EventEndTime | Date et heure exactes auxquelles une activité ou un événement précis a pris fin. | ||
| Description L’heure de fin de l’événement indique le moment où une activité s’achève. De nombreuses activités sont instantanées, avec une heure de début identique à l’heure de fin, tandis que d’autres, comme une étape d’approbation, peuvent avoir une durée mesurable. Associé à l’horodatage de l’événement (heure de début), cet attribut permet de calculer directement la durée de traitement d’une activité. Cette analyse montre quelles étapes consomment le plus de temps et de ressources, et permet de les distinguer des temps d’attente entre les activités. Elle aide ainsi à repérer les inefficacités propres à certaines tâches. Pourquoi est-ce important ? Il permet de calculer précisément le temps nécessaire à chaque activité, ce qui est indispensable pour analyser l’efficacité des ressources et repérer les tâches les plus longues. Où trouver ces données Comme pour StartTime, cette information peut provenir des pistes d’audit système de NetSuite. Il peut être nécessaire d’associer un événement de « début » à l’événement de « fin » correspondant. Exemples 2023-10-26T10:05:14Z2023-10-27T14:32:00Z2023-11-15T09:05:00Z | |||
| Montant total de la facture InvoiceTotalAmount | Montant total de la facture, taxes et autres frais compris. | ||
| Description Cet attribut indique le montant total que le client est censé payer. Il constitue une donnée financière fondamentale pour chaque cas de facturation. L’analyse du processus selon le montant des factures permet de comparer les cas en fonction de leur valeur. Elle peut, par exemple, révéler si les factures de montant élevé suivent un parcours différent et plus complexe que celles de faible montant. Elle aide également à prioriser les efforts de recouvrement et à mesurer l’incidence financière des retards de paiement ou des erreurs de facturation. Pourquoi est-ce important ? Il permet d’analyser le processus selon la valeur des factures, de prioriser celles dont le montant est élevé et de comprendre l’incidence financière des inefficacités. Où trouver ces données Correspond au champ « Total » (total) de l’enregistrement de transaction Invoice dans NetSuite. Exemples 1500.0089.9912500.50 | |||
| Nom du client CustomerName | Nom du client auquel la facture a été adressée. | ||
| Description Cet attribut identifie la personne ou l’entité juridique à laquelle la facture est adressée. Il relie le processus de facturation à la gestion de la relation client. L’analyse du processus par client permet de repérer les habitudes de paiement, les litiges ou la complexité des factures propres à certains clients. Ces observations peuvent éclairer la segmentation de la clientèle, les décisions relatives aux limites de crédit et les stratégies de recouvrement adaptées. Elles peuvent, par exemple, révéler qu’un client donné a régulièrement besoin de corrections de facture. Pourquoi est-ce important ? Il permet d’analyser le processus du point de vue du client et de repérer les habitudes de paiement, les problèmes récurrents ou les écarts propres à certains clients. Où trouver ces données Correspond au champ « Customer » ou au champ de nom « Entity » de l’enregistrement de transaction Invoice dans NetSuite. Exemples Global Tech Inc.Innovate Solutions LLCCornerstone Corp | |||
| Région Region | Région géographique associée au client ou à la transaction. | ||
| Description L’attribut Région classe les factures selon leur zone géographique, déterminée à partir de l’adresse du client ou de l’unité opérationnelle qui a émis la facture. Il constitue un axe de comparaison utile. Le Dashboard « Comparaison des processus de facturation par région » s’appuie sur cet attribut pour comparer les indicateurs, comme les temps de cycle, les taux d’erreur et les variantes du processus, entre différentes régions. Cette analyse permet de repérer les écarts de performance régionaux, de dégager les pratiques efficaces et d’harmoniser les processus à l’échelle de l’organisation. Pourquoi est-ce important ? Il permet de comparer différentes zones géographiques, de repérer les écarts de performance régionaux et de généraliser les pratiques efficaces. Où trouver ces données Dans NetSuite, ces données sont souvent stockées dans un segment personnalisé ou un champ de classification de la fiche client ou de l’enregistrement de transaction. Exemples Amérique du NordEMEAAPAC | |||
| Utilisateur User | Nom ou identifiant de l’utilisateur qui a effectué l’activité. | ||
| Description Cet attribut identifie l’employé ou l’utilisateur système responsable d’une étape précise du processus. Il peut s’agir de la personne qui a créé ou approuvé la facture, ou affecté le paiement. L’analyse par utilisateur aide à comprendre la répartition de la charge de travail, les performances individuelles et les besoins de formation. Elle peut également faire ressortir des possibilités d’automatisation en indiquant quelles activités manuelles sont réalisées par le plus grand nombre d’utilisateurs. Elle est aussi essentielle pour la conformité et l’analyse des pistes d’audit. Pourquoi est-ce important ? Il permet d’analyser la répartition de la charge de travail, les performances par utilisateur et le respect du processus, des éléments essentiels à la gestion des ressources et à la formation ciblée. Où trouver ces données Disponible dans le sous-onglet System Notes ou dans certains champs « Modified By » des enregistrements Invoice et des transactions associées dans NetSuite. Exemples Alice SmithBob JohnsonSYSTÈME | |||
| Conditions de paiement PaymentTerms | Conditions de paiement convenues entre l’entreprise et le client. | ||
| Description Les conditions de paiement précisent quand et comment le client doit régler sa facture, par exemple « Net 30 » ou « Due on receipt ». Ces informations servent à calculer automatiquement la date d’échéance de la facture. Cet attribut est essentiel au Dashboard « Respect des conditions de paiement ». L’analyse des taux de paiement à temps selon les différentes conditions permet d’en évaluer l’efficacité. Elle peut, par exemple, montrer si les clients bénéficiant de conditions « Net 15 » paient plus rapidement que ceux soumis à des conditions « Net 30 », et ainsi éclairer les négociations contractuelles et les politiques de crédit. Pourquoi est-ce important ? Il est essentiel pour évaluer l’efficacité des différentes conditions de paiement et leur incidence sur le respect des délais par les clients. Où trouver ces données Correspond au champ « Terms » de l’enregistrement de transaction Invoice dans NetSuite. Exemples Net 30Net 60À réception | |||
| Délai moyen de paiement client DaysSalesOutstanding | Nombre de jours entre la date de facturation et la date de réception du paiement. | ||
| Description Le délai moyen de paiement client (DSO) est un indicateur financier important qui mesure le nombre moyen de jours nécessaires pour recevoir un paiement après l’émission d’une facture. Cet attribut est calculé pour chaque facture afin de permettre une analyse détaillée. Le DSO est souvent agrégé pour constituer un KPI global, mais sa mesure au niveau de chaque facture permet des analyses plus précises. Elle peut servir à repérer les clients, les régions ou les types de factures associés aux délais les plus longs. Le Dashboard « Évolution du DSO » s’appuie sur cet indicateur pour visualiser l’efficacité du recouvrement au fil du temps et éclairer la gestion du fonds de roulement. Pourquoi est-ce important ? Il mesure l’efficacité du recouvrement pour chaque facture et permet d’analyser en détail les causes premières d’un DSO élevé ainsi que ses effets sur la trésorerie. Où trouver ces données Calculé en soustrayant « InvoiceDate » de l’horodatage de l’activité « Paiement client reçu ». Exemples 294562 | |||
| Département Department | Le département interne associé à la facture. | ||
| Description Cet attribut désigne le département interne, par exemple les ventes, les services ou une branche d’activité particulière, responsable de la transaction. Il s’agit d’un segment de classification standard dans NetSuite. L’analyse du processus par département permet de comparer les résultats en interne et de déterminer si certains départements traitent les factures plus efficacement que d’autres. Elle peut révéler des différences dans le respect du processus ou la répartition des ressources, et orienter les initiatives d’amélioration vers les secteurs concernés de l’organisation. Pourquoi est-ce important ? Il permet de comparer les performances du processus entre les différents départements internes, de mettre en évidence les écarts et de repérer les possibilités de standardisation. Où trouver ces données Il s’agit du champ de classification « Department », qui peut être renseigné au niveau de l’en-tête ou des lignes d’une facture dans NetSuite. Exemples Ventes - EntrepriseServices professionnelsMatériel informatique | |||
| Devise Currency | Code de la devise utilisée pour le montant de la facture. | ||
| Description Cet attribut indique la devise dans laquelle le montant de la facture est exprimé, par exemple USD, EUR ou GBP. Il apporte un contexte indispensable à toute valeur monétaire. Pour les organisations présentes dans plusieurs pays, l’analyse par devise aide à comprendre les performances financières sur différents marchés. Elle garantit une interprétation correcte des montants et permet de les agréger et de les comparer après conversion, si nécessaire. Pourquoi est-ce important ? Il apporte le contexte nécessaire à l’interprétation des montants, indispensable à l’exactitude des rapports et des analyses financières, notamment pour les activités internationales. Où trouver ces données Correspond au champ « Currency » de l’enregistrement de transaction Invoice dans NetSuite. Exemples USDEURGBP | |||
| Numéro de commande client SalesOrderNumber | Identifiant de la commande client à partir de laquelle la facture a été générée. | ||
| Description Cet attribut renvoie directement à la commande client d’origine et relie le processus de facturation aux processus de vente et d’exécution des commandes qui le précèdent. L’ajout du numéro de commande client donne une vue plus complète du cycle de commande-encaissement. Il permet de remonter des problèmes de facturation à leur origine dans le processus de vente. Par exemple, des corrections fréquentes de factures peuvent être liées à des erreurs de saisie dans certains types de commandes client. Pourquoi est-ce important ? Il relie le processus de facturation au processus de vente et permet d’analyser le cycle de commande-encaissement de bout en bout pour repérer les causes des problèmes de facturation. Où trouver ces données Indiqué dans le champ « Created From » ou dans l’onglet « Related Records » d’une facture dans NetSuite. Exemples SO-0009876SO-0009877SO-0009878 | |||
| Paiement reçu à temps IsOnTimePayment | Indique si le paiement du client a été reçu au plus tard à la date d’échéance de la facture. | ||
| Description Cet indicateur booléen calculé compare l’horodatage de l’activité « Paiement client reçu » à la date d’échéance de la facture (« DueDate »). Il prend la valeur « true » si le paiement a été reçu à temps ou en avance, et « false » s’il est en retard. Cet attribut sert de base au KPI « Taux de paiements reçus à temps » et au Dashboard « Respect des conditions de paiement ». Il fournit une mesure simple et claire du comportement de paiement des clients, ce qui facilite l’analyse et le reporting. Il aide à repérer rapidement les tendances en matière de délais de paiement et à évaluer l’efficacité des stratégies de recouvrement. Pourquoi est-ce important ? Il fournit un indicateur clair de l’efficacité du recouvrement, contribue directement au calcul du KPI « Taux de paiements reçus à temps » et permet d’analyser le comportement des clients. Où trouver ces données Cet attribut est calculé en comparant l’horodatage de l’événement de paiement à l’attribut « DueDate » au niveau du dossier. Exemples truefalse | |||
| Reprise IsRework | Indicateur calculé qui signale les activités correspondant à une reprise ou à une boucle de correction. | ||
| Description Cet indicateur booléen prend la valeur « true » pour les activités correspondant à des reprises sans valeur ajoutée, comme « Facture corrigée » ou un deuxième événement « Facture approuvée » dans un même dossier. Il est généralement calculé à partir du nom de l’activité ou de sa répétition. Cet attribut est essentiel au Dashboard « Analyse des reprises et des rejets de factures » et au KPI « Taux d’erreur des factures ». Il permet de quantifier facilement les reprises et de mettre en évidence les problèmes de qualité du processus. En filtrant les activités de reprise, les équipes peuvent rapidement repérer les causes premières des erreurs et mesurer les effets des initiatives d’amélioration. Pourquoi est-ce important ? Il mesure directement la qualité du processus en signalant les boucles de reprise inefficaces. Vous pouvez ainsi analyser les causes premières et l’incidence financière des erreurs de facturation. Où trouver ces données Cet attribut est calculé lors de la transformation des données. La logique appliquée repère les reprises, par exemple en signalant certains noms d’activité (« Facture corrigée ») ou les activités répétées. Exemples truefalse | |||
| Statut de la facture InvoiceStatus | Statut actuel de la facture dans son cycle de vie. | ||
| Description Cet attribut indique l’état actuel de la facture, par exemple « Open », « Paid in Full » ou « Voided ». Il donne un aperçu de l’étape à laquelle se trouve la facture dans le processus. Le Dashboard « Vue d’ensemble du statut des factures ouvertes » repose directement sur cet attribut. Il permet d’évaluer les comptes clients à tout moment, afin que les équipes financières puissent suivre les soldes en attente, gérer le recouvrement et prévoir les entrées de trésorerie. L’analyse du statut final aide également à comprendre les résultats du processus. Pourquoi est-ce important ? Il donne un aperçu de l’état actuel des comptes clients et permet de créer des Dashboards pour suivre les factures ouvertes et l’avancement global de la facturation. Où trouver ces données Correspond au champ « Status » de l’enregistrement de transaction Invoice dans NetSuite. Exemples OuverteIntégralement payéeAnnuléeEn attente d’approbation | |||
Activités du processus commande à encaissement : facturation et émission de factures
| Activité | Description | ||
|---|---|---|---|
| Facture approuvée | La facture a été officiellement approuvée et peut être envoyée au client. Cet événement est enregistré lorsque le statut d’approbation passe de « Pending Approval » à « Approved », généralement à la suite d’une action du flux de travail. | ||
| Pourquoi est-ce important ? Cette étape clé conditionne l’envoi de la facture au client. Elle est essentielle pour mesurer les temps de cycle d’approbation et calculer l’indicateur « Taux de facturation automatisée ». Où trouver ces données Déduit du passage du champ « Approval Status » de l’enregistrement Invoice à « Approved ». L’horodatage exact figure dans les notes système de la transaction. Données à recueillir Déduit du passage du champ « Approval Status » à « Approved », consigné dans les notes système. Type d’événement inferred | |||
| Facture créée | Indique la création officielle de l’enregistrement de transaction de facture dans NetSuite. Cet événement marque le début du processus de facturation pour chaque numéro de facture unique. Il est enregistré à partir de l’horodatage de création de la transaction. | ||
| Pourquoi est-ce important ? Il s’agit de l’événement de début principal du processus de facturation. L’analyse du délai entre cet événement et les suivants révèle l’efficacité globale du processus et sert de référence pour l’indicateur de temps de cycle de génération des factures. Où trouver ces données L’événement est enregistré à partir de l’horodatage du champ « Date Created » de l’enregistrement de transaction Invoice. Les notes système de NetSuite consignent également explicitement la création de la facture et l’utilisateur concerné. Données à recueillir Événement enregistré lors de la création de l’enregistrement de transaction Invoice. Type d’événement explicit | |||
| Facture envoyée au client | Indique que la facture a été envoyée au client, généralement par e-mail. Cet événement est enregistré en suivant l’exécution par un utilisateur de l’action « Email » depuis l’enregistrement de la facture. | ||
| Pourquoi est-ce important ? Cette étape marque le début de la période de recouvrement auprès du client et constitue le point de départ principal du calcul du délai moyen de paiement client (DSO). Où trouver ces données Déduit du renseignement du champ « Date Last Emailed » dans l’enregistrement Invoice. Il peut également être enregistré à partir de la création d’un enregistrement de message électronique dans le sous-onglet Communication. Données à recueillir Déduit du renseignement du champ « Date Last Emailed » ou de la création d’un enregistrement de communication. Type d’événement inferred | |||
| Facture intégralement payée | Le statut de la facture est passé à « Paid In Full », ce qui indique que son solde est désormais nul. Cet événement marque la fin du cycle de facturation et de recouvrement de la facture. | ||
| Pourquoi est-ce important ? Il s’agit de l’événement de fin principal en cas de réussite du processus. Le temps total nécessaire pour atteindre cet état correspond au temps de cycle de bout en bout du cycle de conversion de trésorerie. Où trouver ces données Déduit du passage du champ « Status » de l’enregistrement Invoice à « Paid In Full ». L’horodatage de cette modification de statut figure dans les notes système de la transaction. Données à recueillir Déduit du passage du champ « Status » à « Paid In Full », consigné dans les notes système. Type d’événement inferred | |||
| Paiement du client reçu | Un paiement a été reçu du client et enregistré dans le système. L’événement correspond à la création d’une transaction « Customer Payment » dans NetSuite, qui peut être affectée à une ou plusieurs factures. | ||
| Pourquoi est-ce important ? Cet événement marque la réception des fonds, mais pas nécessairement leur affectation à une facture précise. Il s’agit de la première étape du processus d’affectation des paiements et d’un événement clé pour le calcul du DSO. Où trouver ces données L’événement est enregistré à partir de la date de création de l’enregistrement de transaction « Customer Payment ». Le lien avec la facture est établi dans le sous-onglet « Apply » du paiement. Données à recueillir Création d’un enregistrement de transaction Customer Payment. Type d’événement explicit | |||
| Avoir créé | Un avoir a été créé et appliqué à la facture, ce qui réduit le solde restant dû. Cela correspond généralement à un retour de produit, une réclamation concernant un service ou une correction de prix. | ||
| Pourquoi est-ce important ? Cet événement met en évidence les reprises, les problèmes de qualité ou les litiges avec les clients. Des occurrences fréquentes peuvent révéler des problèmes sous-jacents et sont à prendre en compte dans le Dashboard « Analyse des reprises et rejets de factures ». Où trouver ces données L’événement est enregistré à partir de la création d’un enregistrement de transaction Credit Memo. Le lien vers la facture d’origine figure dans le champ « Created From » ou dans le sous-onglet « Apply » de l’avoir. Données à recueillir Création d’un enregistrement Credit Memo lié à la facture d’origine. Type d’événement explicit | |||
| Échéance de paiement atteinte | Événement calculé lorsque la date du jour correspond à la date d’échéance de la facture. Il ne correspond pas à une action directe de l’utilisateur ou du système, mais est déduit des données existantes lors de l’analyse. | ||
| Pourquoi est-ce important ? Il sert de référence essentielle pour mesurer le respect des délais de paiement. Il est nécessaire au calcul de l’indicateur « Taux de paiement à temps » et à l’analyse des comportements de paiement des clients. Où trouver ces données Il ne s’agit pas d’un événement explicite dans NetSuite. Il est calculé en comparant l’horodatage du journal d’événements au champ « Due Date » de l’enregistrement de transaction Invoice. Données à recueillir Calculé lorsque l’horodatage de l’événement correspond au champ « Due Date » de la facture. Type d’événement calculated | |||
| Facture annulée | La facture a été annulée, ce qui annule la transaction et contre-passe son incidence sur le grand livre. Cette action est généralement effectuée lorsqu’une facture a été créée par erreur avant son paiement. | ||
| Pourquoi est-ce important ? Cet événement correspond à une exception du processus et à un état final. Comprendre pourquoi des factures sont annulées peut révéler des erreurs de saisie ou de processus à corriger en amont. Où trouver ces données Il s’agit d’une action explicite de l’utilisateur. Elle peut être enregistrée dans les notes système de la facture, qui indiquent quand et par qui la transaction a été annulée. Données à recueillir Action explicite « Void » consignée dans les notes système de la facture. Type d’événement explicit | |||
| Facture clôturée | La transaction de facture a été clôturée, souvent dans le cadre des opérations comptables de fin de période. Cette action empêche toute modification ultérieure de la transaction une fois qu’elle a été entièrement payée et rapprochée. | ||
| Pourquoi est-ce important ? Bien que cette étape intervienne souvent après le paiement intégral, elle peut constituer une dernière formalité administrative. L’analyse du délai entre le paiement et la clôture peut éclairer la rapidité de production des rapports financiers. Où trouver ces données Déduit du passage du champ « Status » à « Closed » ou à un état similaire. L’horodatage de cette modification est enregistré dans les notes système. Données à recueillir Déduit de la modification du champ « Status » consignée dans les notes système. Type d’événement inferred | |||
| Facture soumise pour approbation | Correspond au passage du statut de la facture à « Pending Approval ». Cet événement est enregistré lorsqu’un utilisateur soumet la facture à un flux de travail d’approbation configuré, une personnalisation courante. | ||
| Pourquoi est-ce important ? Cette activité marque le début d’un éventuel goulot d’étranglement lié à l’approbation. Le temps d’attente avant approbation représente une part importante du temps de cycle global de traitement des factures. Où trouver ces données Déduit du passage du champ « Approval Status » de l’enregistrement Invoice à « Pending Approval ». L’horodatage de cette modification figure dans la piste d’audit des notes système de la facture. Données à recueillir Déduit de la modification du champ « Approval Status » consignée dans les notes système. Type d’événement inferred | |||
| Paiement affecté à la facture | Le paiement reçu du client a été affecté précisément à cette facture, ce qui réduit le montant dû. Cette affectation est enregistrée lorsque les modifications sont sauvegardées dans l’enregistrement Customer Payment. | ||
| Pourquoi est-ce important ? Cet événement établit le lien entre la réception des fonds et le règlement de la facture. Le délai entre « Paiement reçu » et cet événement définit l’indicateur de temps de cycle d’affectation des paiements. Où trouver ces données L’événement est enregistré à partir des notes système ou de la piste d’audit de la transaction Customer Payment, au moment précis où l’affectation à la ligne de facture est sauvegardée. L’horodatage de cette affectation est essentiel. Données à recueillir Consigné lorsque l’enregistrement Customer Payment est sauvegardé avec une affectation à la facture. Type d’événement explicit | |||
| Relance de paiement envoyée | Un message concernant un paiement en attente a été envoyé au client. Il est enregistré comme activité ou e-mail envoyé depuis l’enregistrement de la facture ou du client, souvent par une solution de relance. | ||
| Pourquoi est-ce important ? Cet événement est essentiel pour évaluer l’efficacité des stratégies de recouvrement. L’analyse de son effet sur les paiements ultérieurs aide à optimiser la fréquence et le moment des relances. Où trouver ces données L’événement est enregistré à partir de la création d’un enregistrement d’e-mail dans le sous-onglet Communication > Messages de l’enregistrement Invoice ou Customer. Les solutions automatisées de relance peuvent également consigner ces événements sous forme d’enregistrements personnalisés ou de tâches. Données à recueillir Consigné sous forme d’e-mail ou d’activité associé à la facture. Type d’événement explicit | |||
Guides d’extraction
Étapes
- Connectez-vous à NetSuite : accédez à votre compte NetSuite avec un rôle disposant des autorisations nécessaires pour créer et exécuter des recherches enregistrées sur les transactions.
- Accédez aux recherches enregistrées : ouvrez Reports > Saved Searches > All Saved Searches > New. Dans la liste des types de recherche, sélectionnez « Transaction ». Ce type servira de base à plusieurs recherches, une par type d’événement.
- Créez la recherche « Facture créée » : elle permet de consigner la création des factures.
- Dans l’onglet « Criteria », sous « Standard », définissez le filtre « Type » sur « is Invoice ».
- Ajoutez le filtre « Main Line » et définissez-le sur « is true » pour obtenir un enregistrement par facture.
- Dans l’onglet « Results », ajoutez les colonnes nécessaires. Utilisez des formules pour créer des champs normalisés comme « ActivityName ». Par exemple, ajoutez un champ « Formula (Text) » avec la formule
_UTF8'Invoice Created'.
- Créez des recherches pour les changements de statut (approbation, paiement, annulation, clôture) : de nombreuses activités correspondent à des changements de statut. Les System Notes sont le moyen le plus fiable d’obtenir l’horodatage exact.
- Créez une nouvelle recherche enregistrée de type Transaction.
- Dans l’onglet « Criteria », définissez « Type » sur « is Invoice ».
- Dans le sous-onglet « Standard », ajoutez le filtre « System Notes : Field » et sélectionnez le champ de statut concerné, par exemple « Approval Status ».
- Ajoutez le filtre « System Notes : New Value » et définissez-le sur le statut visé, par exemple « Approved ».
- Dans l’onglet « Results », associez « System Notes : Date » à
EventTimestampet « System Notes : Set by » àUtilisateur. - Répétez l’opération pour chaque activité liée à un statut : « Facture soumise pour approbation », « Facture approuvée », « Facture entièrement payée », « Facture annulée » et « Facture clôturée ». Adaptez les filtres de champ et de valeur en conséquence.
- Créez la recherche « Facture envoyée au client » : cet événement est généralement consigné en suivant les courriels envoyés depuis la fiche de facture.
- Créez une recherche enregistrée de type Transaction et définissez « Type » sur « is Invoice ».
- Dans l’onglet « Criteria », sous « Related Records », ajoutez le filtre « Messages : Date Sent » et définissez-le sur « is not empty ».
- Dans l’onglet « Results », associez « Messages : Date Sent » à
EventTimestampet « Messages : Author » àUtilisateur.
- Créez des recherches pour les paiements et les avoirs : ces activités concernent des types de transaction distincts, liés à la facture.
- Pour « Paiement client reçu », créez une recherche dont le filtre « Type » est « Customer Payment ». Utilisez la date de création comme horodatage de l’événement.
- Pour « Paiement affecté à une facture », utilisez la même recherche « Customer Payment », en reliant les champs « Applied To Transaction ». La date de création de la transaction de paiement sert d’horodatage. Vous obtiendrez une ligne par affectation à une facture.
- Pour « Avoir créé », créez une recherche dont le filtre « Type » est « Credit Memo » et reliez-la au champ « Created From » pour récupérer le numéro de la facture d’origine.
- Exécutez et exportez chaque recherche enregistrée : lancez chacune des recherches créées. Dans la page des résultats, cliquez sur l’icône d’exportation (CSV, Excel ou PDF), puis choisissez CSV. Si le nombre de résultats dépasse la limite d’exportation de NetSuite, vous devrez peut-être procéder par lots.
- Regroupez et transformez les données : rassemblez tous les fichiers CSV exportés dans un seul fichier à l’aide d’un outil comme Microsoft Excel, d’un script Python ou d’un outil de préparation des données.
- Créez l’événement « Date d’échéance du paiement atteinte » : dans le fichier regroupé, ajoutez une ligne pour chaque événement « Facture créée ». Définissez
ActivityNamesur « Payment Due Date Reached »,EventTimestampsur la valeur du champ « DueDate » de la facture, puis copiez les autres attributs pertinents de la facture. - Finalisez le journal d’événements : normalisez les en-têtes de colonnes selon le schéma requis (par exemple,
InvoiceNumber,ActivityName,EventTimestamp). Vérifiez que les formats d’horodatage sont cohérents. Ajoutez les colonnesSourceSystemetLastDataUpdateavec des valeurs fixes pour ce lot d’extraction. Enregistrez le fichier consolidé final au format CSV pour l’importer.
Configuration
- Prérequis : le rôle utilisateur doit permettre de créer, modifier et exécuter des recherches enregistrées de type « Transaction ». Il faut également pouvoir consulter les enregistrements Invoice, Customer Payment, Credit Memo et System Notes.
- Type de recherche : le type principal utilisé pour toutes les extractions est « Transaction ». Il donne accès à tous les enregistrements et aux relations nécessaires.
- Filtrage par période : pour maîtriser les performances et le volume de données, appliquez un filtre de dates à chaque recherche. Pour une première analyse, il est recommandé de sélectionner les 3 à 6 derniers mois à partir du champ « Date Created ».
- Filtre Main Line : définissez le critère « Main Line » sur « true » pour les événements au niveau de l’en-tête du document, comme « Facture créée ». Définissez-le sur « false » pour analyser les détails des lignes, ce qui n’est pas nécessaire dans ce processus.
- System Notes : la consignation des changements de statut repose en grande partie sur les System Notes. Vérifiez que l’audit est activé pour les principaux champs de transaction, comme « Status » et « Approval Status », dans la configuration NetSuite (Setup > Company > Enable Features > SuiteCloud > SuiteAudit Trail).
- Performances : les recherches complexes comportant de nombreuses jointures et formules, exécutées sur une longue période, peuvent être lentes dans l’interface NetSuite. Il est conseillé de les lancer et de les exporter en dehors des heures de pointe. Si une recherche expire, réduisez la période et exportez les données par lots plus petits.
Exemple de requête 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.
*/ Étapes
- Prérequis : activez SuiteAnalytics Connect : vérifiez que le module SuiteAnalytics Connect est sous licence et activé dans votre instance NetSuite. Cette opération est généralement effectuée par un administrateur NetSuite depuis Setup > Company > Enable Features > Analytics.
- Téléchargez et configurez le pilote ODBC : ouvrez le Dashboard d’accueil NetSuite et repérez le portlet « Settings ». Cliquez sur le lien « Set Up SuiteAnalytics Connect » pour télécharger le pilote ODBC adapté à votre système d’exploitation. Suivez les instructions d’installation de NetSuite et renseignez l’hôte du service, le port, l’identifiant de compte, l’identifiant de rôle, l’adresse e-mail et le mot de passe.
- Établissez la connexion à la base de données : utilisez un client SQL compatible avec les connexions ODBC, comme DBeaver, Tableau ou Power BI. Créez une connexion ODBC à l’aide du pilote configuré à l’étape précédente. Testez-la pour vérifier que vous pouvez vous authentifier et accéder à la base de données répliquée en lecture seule de NetSuite.
- Préparez la requête SQL : copiez la requête SQL complète fournie dans la section « Query » de ce document. Elle est conçue pour extraire toutes les activités et tous les attributs nécessaires à l’analyse du processus de facturation commande à encaissement.
- Définissez les paramètres de la requête : avant de l’exécuter, repérez les valeurs fictives dans la requête. Remplacez
'YYYY-MM-DD'par les dates de début et de fin souhaitées pour la période d’extraction. Remplacez également[Your Subsidiary ID]par l’identifiant interne de la filiale NetSuite à analyser. - Exécutez la requête : lancez la requête modifiée dans votre client SQL. La durée d’exécution dépendra de la période sélectionnée et du volume de transactions de votre compte NetSuite.
- Vérifiez les résultats : une fois la requête terminée, vous obtenez un tableau plat représentant le journal d’événements. Chaque ligne correspond à une activité du cycle de vie de la facture. Vérifiez que les données sont complètes et exactes.
- Exportez le journal d’événements : exportez les résultats de la requête depuis votre client SQL vers un fichier CSV. Vérifiez que le fichier est encodé en UTF-8 pour éviter les problèmes de caractères.
- Préparez l’importation : avant d’importer le fichier dans un outil de Process Mining, vérifiez que les en-têtes de colonnes correspondent aux noms d’attributs requis, comme InvoiceNumber, ActivityName et EventTimestamp. Assurez-vous que les formats de date et d’heure sont cohérents.
Configuration
- Licence SuiteAnalytics Connect : une licence valide du module SuiteAnalytics Connect est indispensable pour accéder à la base de données répliquée en lecture seule de NetSuite. Sans elle, l’accès direct par SQL est impossible.
- Rôle et utilisateur dédiés : il est fortement recommandé de créer un rôle NetSuite dédié, doté des autorisations nécessaires pour SuiteAnalytics Connect. Ce rôle doit disposer d’un accès en lecture seule aux enregistrements requis, notamment Transactions, Customers et System Notes. Attribuez ce rôle à un utilisateur dédié à l’extraction afin d’assurer la sécurité et la traçabilité.
- Filtrage par période : la requête fournie comprend une clause
WHEREsur la date de création de la facture (Transaction.TRANDATE). Pour les premières extractions, commencez de préférence par une période plus courte, par exemple les 3 à 6 derniers mois, afin de maîtriser les performances et le volume de données. Exemple :AND T.TRANDATE BETWEEN '2023-01-01' AND '2023-06-30'. - Filtrage par filiale : si le compte comporte plusieurs filiales, le filtrage sur la filiale concernée est essentiel pour les performances et la pertinence des données. La requête contient le paramètre fictif
WHERE T.SUBSIDIARY_ID = [Your Subsidiary ID], qu’il faut renseigner. - Actualisation des données : la base de données SuiteAnalytics Connect est une réplique en lecture seule. Les données sont généralement actualisées plusieurs fois par heure, mais pas en temps réel. Un décalage de quelques heures peut survenir entre une transaction dans NetSuite et son apparition dans la base Connect.
Exemple de requête 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'); Prêt à commencer ?
Appuyez-vous sur ce modèle pour lancer votre initiative de Process Mining et mieux comprendre vos opérations de facturation. Commencez dès aujourd’hui à optimiser votre processus commande à encaissement.
Optimisez dès maintenant la facturation dans NetSuite pour accélérer vos encaissements
Réduisez de 30 % le temps de cycle de facturation dans NetSuite et améliorez votre trésorerie.
Aucune carte bancaire requise. Configuration en quelques minutes.