Votre modèle de données Order to Cash, facturation et émission des factures
Votre modèle de données Order to Cash, facturation et émission des factures
- Attributs recommandés à collecter
- Activités clés à suivre
- Guide d’extraction pour NetSuite
Attributs du processus Order to Cash - Facturation et émission des factures
| Nom | Description | ||
|---|---|---|---|
| Horodatage de l’événement EventTimestamp | Date et heure précises auxquelles une activité ou un événement donné s’est produit. | ||
| Description Cet attribut enregistre le moment exact auquel une activité a eu lieu. Il est indispensable pour ordonner les événements chronologiquement et réaliser toutes les analyses fondées sur le temps. Dans le Process Mining, l’Event Timestamp 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 par rapport aux SLA et comprendre la dynamique temporelle du processus de facturation. Il permet notamment de calculer le temps de cycle de création des factures et le Délai moyen de paiement client (DSO). Pourquoi c’est important Il fournit l’ordre chronologique des événements, indispensable au calcul de toutes les métriques fondées sur la durée, à l’identification des goulots d’étranglement et à l’analyse des performances du processus au fil du temps. Où les obtenir Les informations d’horodatage se trouvent généralement dans les system notes, les pistes d’audit ou les champs « Date Created » des enregistrements associés à chaque transaction de facture dans NetSuite. 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écrit une étape ou un événement précis du processus de facturation, comme « Invoice Created », « Invoice Approved » ou « Customer Payment Received ». Ces activités constituent les éléments successifs de la cartographie du processus. L’analyse de la séquence et de la fréquence de ces activités est fondamentale en process mining. Elle permet de visualiser le flux réel du processus, d’identifier les chemins fréquents et rares, ou variantes, et de repérer les activités répétées, qui peuvent révéler des reprises ou une inefficacité. Pourquoi c’est important Cet attribut est fondamental pour construire la cartographie du processus et visualiser et analyser les différentes étapes et les différents chemins suivis par une facture. Où les obtenir Dérivé des journaux système, des changements de statut ou des enregistrements d’événements associés à la transaction de facture dans NetSuite. Cela nécessite souvent de faire correspondre les changements de statut des transactions ou la création d’enregistrements associés à des noms d’activités définis. Exemples Facture crééeFacture approuvéePaiement client reçuFacture intégralement payée | |||
| Numéro de facture InvoiceNumber | Identifiant unique de chaque document de facturation, qui sert d’identifiant de cas principal pour le processus de facturation. | ||
| Description L’Invoice Number constitue la référence centrale de l’analyse du processus de facturation. Il identifie de manière unique chaque facture, de sa création à sa clôture, et regroupe dans un même cas toutes les activités associées, telles que l’approbation, l’envoi et l’affectation du paiement. Dans le Process Mining, l’analyse du parcours de chaque Invoice Number offre une vue complète du cycle de vie de la facturation. Elle permet d’identifier les variantes du processus, les goulots d’étranglement et les écarts par rapport à la procédure standard, afin d’améliorer les encaissements et l’efficacité opérationnelle. Pourquoi c’est important Il est indispensable pour suivre le cycle de vie de chaque facture de bout en bout, reconstituer l’ensemble du processus de facturation et réaliser une analyse détaillée de la performance. Où les obtenir Il s’agit généralement du champ « Transaction ID » ou d’un champ d’identifiant unique similaire dans l’enregistrement de transaction de la facture dans NetSuite. Exemples INV-0012345INV-0012346INV-0012347 | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage indiquant la dernière actualisation des données depuis le système source. | ||
| Description Cet attribut indique la date de dernière mise à jour du jeu de données. Il fournit un contexte sur l’actualité et la pertinence de l’analyse de process mining. Les analystes et les parties prenantes métier utilisent cette information pour vérifier si les analyses reflètent l’état opérationnel le plus récent. Il s’agit d’une métadonnée essentielle pour tout Dashboard ou rapport, car elle garantit que les décisions reposent sur des données dont l’ancienneté est connue et qui ne sont pas interprétées à tort comme des données en temps réel. Pourquoi c’est important Il informe les utilisateurs sur l’actualité des données et leur permet de comprendre la période couverte par l’analyse ainsi que la pertinence des analyses produites. Où les obtenir Cet horodatage est généré et enregistré par l’outil ou le pipeline d’extraction des données lors 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 identifie l’origine des données du processus. Dans cette vue, sa valeur serait systématiquement « NetSuite ». Dans un contexte analytique plus large, notamment au sein des 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 aide à distinguer les processus susceptibles de s’étendre sur plusieurs plateformes et garantit que l’analyse est correctement rattachée au système de référence approprié. Pourquoi c’est important Il fournit un contexte important sur l’origine et la gouvernance des données, en particulier dans les environnements où plusieurs systèmes sont intégrés. Où les obtenir Il s’agit d’une valeur statique (« NetSuite ») ajoutée lors de l’extraction et de la transformation des données. Exemples NetSuite | |||
| 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 facture et des conditions de paiement convenues. Elle représente la date limite à laquelle le client doit payer pour ne pas être considéré comme en retard. Cet attribut est essentiel au suivi des créances clients et à la gestion de la trésorerie. Il sert de référence pour calculer le KPI « On-Time Payment Rate » et analyser le comportement de paiement des clients. Le suivi des écarts par rapport à la date d’échéance aide à identifier les clients qui paient fréquemment en retard et à évaluer l’efficacité des stratégies de recouvrement. Pourquoi c’est important Il est essentiel pour mesurer la ponctualité des paiements et analyser le comportement de paiement des clients, tout en soutenant directement le recouvrement et les prévisions de trésorerie. Où les obtenir Elle correspond au champ « Due Date » (duedate) de l’enregistrement de transaction de la facture dans NetSuite. Exemples 2023-11-252023-11-262023-12-15 | |||
| Date de facture InvoiceDate | Date officielle de la facture telle qu’elle a été émise au client. | ||
| Description La date de facture, ou date de transaction, constitue le 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 de paiement et les dates d’échéance. Dans l’analyse, cette date sert de référence principale pour calculer des KPI financiers tels que le Days Sales Outstanding (DSO) et l’ancienneté des factures. Elle permet une analyse par cohorte et la comparaison de la performance de facturation entre différentes périodes, par exemple d’un mois à l’autre ou d’une année à l’autre. Pourquoi c’est important Cette date sert de référence à des indicateurs financiers essentiels tels que le Days Sales Outstanding (DSO) et l’ancienneté des factures, avec un impact direct sur l’analyse du fonds de roulement. Où les obtenir Elle correspond au champ « Date » (trandate) de l’enregistrement de transaction de la facture dans NetSuite. Exemples 2023-10-262023-10-272023-11-15 | |||
| Est automatisé IsAutomated | Un indicateur précisant 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. Cet attribut est essentiel pour mesurer le niveau d’automatisation du processus de facturation et contribue directement à l’indicateur « Automated Billing Ratio ». En filtrant les activités automatisées ou manuelles, les analystes peuvent repérer les goulots d’étranglement causés par les interventions manuelles et cibler les possibilités d’accroître l’automatisation, de réduire les erreurs humaines et d’améliorer l’efficacité. Pourquoi c’est important Il aide à mesurer le niveau d’automatisation du processus, à repérer les possibilités de réduire les tâches manuelles et à accroître l’efficacité. Où les obtenir Cet attribut est généralement déterminé en vérifiant l’utilisateur associé à une activité. Les événements déclenchés par des utilisateurs nommés « SYSTEM », « flux de travail » ou « Integration » sont signalés comme automatisés. Exemples truefalse | |||
| Heure de fin de l’événement EventEndTime | Date et heure précises auxquelles une activité ou un événement donné a été terminé. | ||
| Description L’heure de fin de l’événement marque l’achèvement d’une activité. De nombreuses activités sont instantanées, leur heure de début et leur heure de fin étant identiques, tandis que d’autres, comme une étape d’approbation, peuvent avoir une durée mesurable. Associé à l’horodatage de l’événement, ou heure de début, cet attribut permet de calculer directement le temps de traitement d’une activité. L’analyse du temps de traitement aide à identifier les étapes qui consomment le plus de temps et de ressources, en les distinguant du temps d’attente entre les activités. Elle est essentielle pour repérer les inefficacités propres à certaines tâches. Pourquoi c’est important Il permet de calculer précisément le temps nécessaire à l’achèvement de chaque activité, ce qui est essentiel pour analyser l’efficacité des ressources et identifier les tâches les plus chronophages. Où les obtenir Comme pour StartTime, cette information peut être extraite des pistes d’audit système de NetSuite. Une logique peut être nécessaire pour 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 | Valeur monétaire totale de la facture, taxes et autres frais compris. | ||
| Description Cet attribut représente le montant total que le client doit payer. Il constitue une donnée financière fondamentale pour chaque cas de facturation. L’analyse du processus en fonction du montant de la facture permet une analyse par valeur. Elle peut par exemple révéler si les factures de montant élevé suivent un processus différent et plus complexe que les factures de faible montant. Elle sert également à hiérarchiser les efforts de recouvrement et à comprendre l’impact financier des retards de paiement ou des erreurs de facturation. Pourquoi c’est important Il permet une analyse du processus par valeur, afin de hiérarchiser les factures de montant élevé et de comprendre l’impact financier des inefficacités du processus. Où les obtenir Cela correspond au champ « Total » (total) de l’enregistrement de transaction Invoice dans NetSuite. Exemples 1500.0089.9912500.50 | |||
| Nom du client CustomerName | Le nom du client auquel la facture a été adressée. | ||
| Description Cet attribut identifie l’entité juridique ou la personne facturée. Il relie le processus de facturation à la gestion de la relation client. L’analyse du processus de facturation par client permet d’identifier les habitudes de paiement, les litiges ou la complexité des factures propres à certains clients. Elle peut orienter la segmentation de la clientèle, les décisions relatives aux limites de crédit et les stratégies de recouvrement adaptées. Elle peut notamment révéler qu’un client donné nécessite régulièrement la reprise de ses factures. Pourquoi c’est important Il permet une analyse centrée sur le client et aide à repérer les habitudes de paiement, les problèmes récurrents ou les écarts de processus propres à certains clients. Où les obtenir Cela correspond au champ de nom « Customer » ou « Entity » de l’enregistrement de transaction Invoice dans NetSuite. Exemples Global Tech Inc.Innovate Solutions LLCCornerstone Corp | |||
| Région Region | La région géographique associée au client ou à la transaction. | ||
| Description L’attribut Region classe les factures selon leur zone géographique, qui peut être déterminée à partir de l’adresse du client ou de l’unité opérationnelle ayant émis la facture. Il s’agit d’une dimension particulièrement utile pour les analyses comparatives. Le Dashboard « Regional Billing Process Comparison » s’appuie sur cet attribut pour comparer des KPI tels que les délais de traitement, les taux d’erreur et les variantes de processus entre différentes régions. Cette analyse permet d’identifier les écarts de performance régionaux, de repérer les bonnes pratiques des régions les plus performantes et de soutenir la standardisation des processus dans l’organisation. Pourquoi c’est important Il permet de comparer les performances entre différentes zones géographiques, ce qui est essentiel pour repérer les écarts régionaux et standardiser les bonnes pratiques. Où les obtenir 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 dans NetSuite. Exemples Amérique du NordEMEAAPAC | |||
| Utilisateur User | Nom ou identifiant de l’utilisateur ayant exécuté l’activité. | ||
| Description Cet attribut identifie le salarié ou l’utilisateur système responsable de l’exécution d’une étape précise du processus. Il peut s’agir de la personne qui a créé la facture, l’a approuvée ou a affecté le paiement. L’analyse du processus par utilisateur aide à comprendre la répartition de la charge de travail et la performance individuelle, ainsi qu’à identifier les besoins de formation. Elle peut également mettre en évidence des possibilités d’automatisation en montrant quelles activités manuelles sont exécutées par le plus grand nombre d’utilisateurs. Elle est aussi essentielle pour la conformité et l’analyse des pistes d’audit. Pourquoi c’est important Il permet d’analyser la répartition de la charge de travail, la performance propre à chaque utilisateur et le respect du processus, des éléments essentiels à la gestion des ressources et à la mise en place de formations ciblées. Où les obtenir Disponible dans le sous-onglet System Notes ou dans les champs « Modified By » des enregistrements de facture et des transactions associées dans NetSuite. Exemples Alice SmithBob JohnsonSYSTEM | |||
| Conditions de paiement PaymentTerms | Les conditions de paiement convenues entre l’entreprise et le client. | ||
| Description Les Payment Terms définissent 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 « Payment Terms Adherence ». L’analyse des taux de paiement à temps selon les différentes conditions permet d’évaluer leur efficacité. Elle peut notamment montrer si les clients bénéficiant de conditions « Net 15 » paient plus rapidement que ceux soumis à des conditions « Net 30 », afin d’éclairer les futures négociations contractuelles et les politiques de crédit. Pourquoi c’est important Il est essentiel pour analyser l’efficacité des différentes conditions de paiement et leur incidence sur la ponctualité des règlements clients. Où les obtenir Cela correspond au champ « Terms » de l’enregistrement de transaction Invoice dans NetSuite. Exemples Échéance à 30 joursÉchéance à 60 joursPayable à réception | |||
| Correspond à une reprise IsRework | Un indicateur calculé qui identifie les activités considérées comme des reprises ou des boucles de correction. | ||
| Description Cet indicateur booléen prend la valeur true pour les activités correspondant à une reprise sans valeur ajoutée, telles que « Invoice Corrected » ou un deuxième événement « Invoice Approved » dans le même cas. Il est généralement déterminé à partir du nom de l’activité ou de la répétition d’une activité. Cet attribut est essentiel au Dashboard « Invoice Rework and Rejection Analysis » et au KPI « Invoice Error Rate ». 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 identifier les causes profondes des erreurs et mesurer l’incidence des initiatives d’amélioration. Pourquoi c’est important Il mesure directement la qualité du processus en signalant les boucles de reprise inefficaces et permet d’analyser les causes profondes ainsi que l’impact financier des erreurs de facturation. Où les obtenir Il s’agit d’un attribut dérivé, calculé lors de la transformation des données. Une logique est appliquée pour identifier les reprises, par exemple en signalant certains noms d’activité (« Invoice Corrected ») ou les activités répétées. Exemples truefalse | |||
| Délai moyen de recouvrement DaysSalesOutstanding | Le nombre de jours entre la date de la facture et la date de réception du paiement. | ||
| Description Le Days Sales Outstanding (DSO) est un indicateur financier essentiel qui mesure le nombre moyen de jours nécessaires pour recouvrer un paiement après l’émission d’une facture. Cet attribut est calculé pour chaque facture afin de permettre une analyse détaillée. Bien qu’il soit souvent agrégé sous la forme d’un KPI global, le DSO au niveau de chaque facture permet des analyses approfondies. Il peut servir à identifier les clients, les régions ou les types de factures associés aux DSO les plus élevés. Le Dashboard « DSO Trend » s’appuie sur cette mesure pour visualiser l’efficacité du recouvrement au fil du temps et mieux gérer le besoin en fonds de roulement. Pourquoi c’est important Il quantifie l’efficacité du recouvrement au niveau de chaque facture et permet d’analyser en détail les causes profondes d’un DSO élevé ainsi que son impact sur les flux de trésorerie. Où les obtenir Calculé en soustrayant « InvoiceDate » de l’horodatage de l’activité « Customer Payment Received ». Exemples 294562 | |||
| Devise Currency | Le code devise du montant de la facture. | ||
| Description Cet attribut précise la devise dans laquelle le montant de la facture est libellé, par exemple USD, EUR ou GBP. Il fournit le contexte indispensable à l’interprétation des valeurs monétaires. Pour les organisations multinationales, l’analyse par devise est importante pour comprendre les performances financières sur différents marchés. Elle garantit une interprétation correcte des valeurs monétaires et permet de les agréger et de les comparer après conversion, si nécessaire. Pourquoi c’est important Il fournit le contexte nécessaire à l’interprétation de toutes les valeurs monétaires, ce qui est essentiel pour produire des rapports et des analyses financières fiables, notamment dans les organisations internationales. Où les obtenir Cela correspond au champ « Currency » de l’enregistrement de transaction Invoice dans NetSuite. Exemples USDEURGBP | |||
| Numéro de commande client SalesOrderNumber | L’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 commerciaux et d’exécution qui le précèdent. L’inclusion du Sales Order Number offre une vision plus complète de l’ensemble du cycle Order-to-Cash. Elle permet de remonter à la source des problèmes de facturation dans le processus commercial. Par exemple, des corrections fréquentes de factures peuvent être liées à des erreurs de saisie sur certains types de commandes clients. Pourquoi c’est important Il relie le processus de facturation au processus commercial et permet une analyse Order-to-Cash de bout en bout afin d’identifier les causes profondes des problèmes de facturation. Où les obtenir Il se trouve dans le champ « Created From » ou dans le sous-onglet « Related Records » d’une transaction Invoice dans NetSuite. Exemples SO-0009876SO-0009877SO-0009878 | |||
| Paiement à temps IsOnTimePayment | Un indicateur précisant si le paiement du client a été reçu à la date d’échéance de la facture ou avant celle-ci. | ||
| Description Cet indicateur booléen calculé compare l’horodatage de l’activité « Customer Payment Received » à la « DueDate » de la facture. Il prend la valeur true si le paiement a été reçu à temps ou en avance, et false s’il a été reçu en retard. Cet attribut constitue la base du KPI « On-Time Payment Rate » et du Dashboard « Payment Terms Adherence ». Il fournit une mesure binaire claire du comportement de paiement des clients, ce qui simplifie l’analyse et le reporting. Il aide à repérer rapidement les tendances de ponctualité des paiements et à évaluer l’efficacité des stratégies de recouvrement. Pourquoi c’est important Il fournit un indicateur clair de réussite du recouvrement et contribue directement au calcul du KPI « On-Time Payment Rate » ainsi qu’à l’analyse du comportement des clients. Où les obtenir Il s’agit d’un attribut calculé. Il nécessite de comparer l’horodatage de l’événement de paiement à l’attribut « DueDate » au niveau du cas. Exemples truefalse | |||
| Service Department | Le service interne associé à la facture. | ||
| Description Cet attribut représente le service interne, par exemple Sales, Services ou une ligne d’activité donnée, responsable de la transaction. Il s’agit d’un segment de classification standard dans NetSuite. L’analyse du processus par service permet d’effectuer des comparaisons internes et de déterminer si certains services disposent de processus de facturation plus efficaces que d’autres. Elle peut révéler des écarts dans le respect du processus ou l’affectation des ressources, afin d’orienter les initiatives d’amélioration vers les parties concernées de l’organisation. Pourquoi c’est important Il permet de comparer les performances du processus entre différents services internes et de mettre en évidence les écarts ainsi que les possibilités de standardisation interne. Où les obtenir Cela correspond au champ de classification « Department », qui peut être défini au niveau de l’en-tête ou des lignes d’une transaction Invoice dans NetSuite. Exemples Ventes, entreprisesServices professionnelsMatériel | |||
| Statut de la facture InvoiceStatus | Le statut actuel de la facture dans son cycle de vie. | ||
| Description Cet attribut reflète l’état actuel de la facture, par exemple « Open », « Paid in Full » ou « Voided ». Il indique où se situe la facture dans le processus à un moment donné. Le Dashboard « Open Invoices Status Overview » repose directement sur cet attribut. Il permet d’évaluer en temps réel les comptes clients, afin d’aider les équipes financières à suivre les soldes impayés, à gérer le recouvrement et à prévoir les encaissements. L’analyse du statut final contribue également à comprendre les résultats du processus. Pourquoi c’est important Il fournit une vue instantanée de l’état actuel des comptes clients et permet de créer des Dashboards qui suivent les factures ouvertes ainsi que l’avancement global de la facturation. Où les obtenir Cela 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 Order to Cash - Facturation et émission des 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 c’est important Il s’agit d’une étape importante qui conditionne l’envoi de la facture au client. Elle est essentielle pour mesurer les délais du cycle d’approbation et calculer le KPI « Automated Billing Ratio ». Où les obtenir Déduit du changement du champ « Approval Status » de l’enregistrement de facture vers « Approved ». L’horodatage précis est consigné dans les system notes de la transaction. Collecte Déduit du changement du champ « Approval Status » vers « Approved » dans les system notes. Type d’événement inferred | |||
| Facture créée | Indique la création officielle de l’enregistrement de transaction de la facture dans NetSuite. Cet événement constitue le point de départ du processus de facturation pour chaque numéro de facture unique et est enregistré à partir de l’horodatage de création de la transaction. | ||
| Pourquoi c’est 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 le KPI Invoice Generation Cycle Time. Où les obtenir Capturé à partir de l’horodatage « Date Created » de l’enregistrement de transaction de la facture. Les system notes de NetSuite consignent également explicitement l’événement de création et l’utilisateur concerné. Collecte Événement enregistré lors de la création de l’enregistrement de transaction de la facture. 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é lorsqu’un utilisateur exécute l’action « Email » depuis l’enregistrement de la facture. | ||
| Pourquoi c’est important Cet événement 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 Days Sales Outstanding (DSO). Où les obtenir Déduit du renseignement du champ « Date Last Emailed » dans l’enregistrement de facture. Il peut également être capturé lors de la création d’un enregistrement de message électronique dans le sous-onglet Communication. Collecte Déduit du renseignement de « 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. Il s’agit de l’aboutissement du cycle de facturation et de recouvrement de la facture. | ||
| Pourquoi c’est important Il s’agit du principal événement de fin réussie du processus. L’analyse du délai total nécessaire pour atteindre cet état fournit le délai de bout en bout du cycle de conversion de trésorerie. Où les obtenir Déduit du changement du champ « Status » de l’enregistrement de facture vers « Paid In Full ». L’horodatage de cette modification figure dans les system notes de la transaction. Collecte Déduit du changement du champ « Status » vers « Paid In Full » dans les system notes. Type d’événement inferred | |||
| Paiement client reçu | Un paiement a été reçu du client et enregistré dans le système. Cet événement est capturé lors de la création d’une transaction « Customer Payment » dans NetSuite, qui peut être affectée à une ou plusieurs factures. | ||
| Pourquoi c’est important Il 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 encaissements et d’un événement important pour le calcul du DSO. Où les obtenir Capturé à 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. Collecte Création d’un enregistrement de transaction Customer Payment. Type d’événement explicit | |||
| Avoir créé | Une transaction d’avoir a été créée et appliquée à la facture, réduisant le solde restant dû. Cela indique généralement un retour de produit, une réclamation concernant un service ou une correction tarifaire. | ||
| Pourquoi c’est important Met en évidence les reprises, les problèmes de qualité ou les litiges clients. Des occurrences fréquentes peuvent révéler des problèmes sous-jacents et constituent un élément important du Dashboard « Invoice Rework and Rejection Analysis ». Où les obtenir Capturé lors de la création d’une transaction d’avoir. Le lien avec la facture d’origine figure dans le champ « Created From » ou dans le sous-onglet « Apply » de l’avoir. Collecte Création d’un enregistrement d’avoir lié à la facture d’origine. Type d’événement explicit | |||
| Date d’échéance du paiement atteinte | Événement calculé qui se produit lorsque la date du jour correspond à la date d’échéance de la facture. Il ne correspond pas à une action directe d’un utilisateur ou du système, mais est déduit des données existantes lors de l’analyse. | ||
| Pourquoi c’est important Il sert de référence importante pour mesurer la ponctualité des paiements. Il est essentiel au calcul du KPI « On-Time Payment Rate » et à l’analyse des comportements de paiement des clients. Où les obtenir 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 de la facture. Collecte 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 l’invalide et contre-passe tout impact sur le grand livre. Cette action est généralement effectuée pour des factures créées par erreur avant leur paiement. | ||
| Pourquoi c’est important Représente une exception de processus et un état terminal. Comprendre pourquoi les factures sont annulées peut révéler des erreurs de saisie ou de processus à corriger en amont. Où les obtenir Il s’agit d’une action explicite de l’utilisateur. Elle peut être capturée dans les system notes de l’enregistrement de facture, qui indiquent quand la transaction a été annulée et par qui. Collecte Action explicite « Void » enregistrée dans les system notes 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 d’un processus comptable de fin de période. Cette action empêche toute modification ultérieure de la transaction une fois celle-ci intégralement payée et rapprochée. | ||
| Pourquoi c’est important Bien qu’elle intervienne souvent après « Paid In Full », cette étape peut constituer une dernière opération administrative. L’analyse des délais entre le paiement et la clôture peut avoir une incidence sur la rapidité du reporting financier. Où les obtenir Déduit du changement du champ « Status » vers « Closed » ou vers un état similaire. L’horodatage de cette modification est capturé dans les system notes. Collecte Déduit de la modification du champ « Status » dans les system notes. Type d’événement inferred | |||
| Facture soumise pour approbation | Représente le changement de statut de la facture en « Pending Approval ». Cet événement est enregistré lorsqu’un utilisateur soumet la facture dans un flux de travail d’approbation configuré, ce qui constitue une personnalisation courante. | ||
| Pourquoi c’est important Cette activité marque le début d’un éventuel goulot d’étranglement au niveau de l’approbation. Le temps d’attente de l’approbation constitue une composante importante du temps de cycle global du traitement de la facture. Où les obtenir Déduit du changement du champ « Approval Status » de l’enregistrement de facture vers « Pending Approval ». L’horodatage de cette modification figure dans la piste d’audit des system notes de la facture. Collecte Déduit de la modification du champ « Approval Status » enregistrée dans les system notes. Type d’événement inferred | |||
| Paiement affecté à la facture | Le paiement reçu du client a été affecté précisément à cette facture, réduisant son montant dû. Cette opération est enregistrée lorsque l’affectation est sauvegardée dans l’enregistrement Customer Payment. | ||
| Pourquoi c’est important Il s’agit du lien essentiel entre la réception des fonds et le règlement de la facture. Le délai entre « Payment Received » et cet événement définit le KPI « Cash Application Cycle Time ». Où les obtenir Capturé dans les system notes ou la piste d’audit de la transaction Customer Payment, précisément lorsque l’affectation à la ligne de facture est sauvegardée. L’horodatage de cette affectation est essentiel. Collecte Enregistré lorsque l’enregistrement Customer Payment est sauvegardé avec une affectation à la facture. Type d’événement explicit | |||
| Relance de paiement envoyée | Une communication concernant un paiement en attente a été envoyée au client. Elle est enregistrée comme une activité ou un e-mail envoyé depuis l’enregistrement de la facture ou du client, souvent par une solution de relance. | ||
| Pourquoi c’est important Cette activité est essentielle pour évaluer l’efficacité des stratégies de recouvrement. L’analyse de son impact sur les paiements ultérieurs aide à optimiser la fréquence et le moment des relances. Où les obtenir Capturé lors de la création d’un enregistrement d’e-mail dans le sous-onglet Communication > Messages de l’enregistrement de la facture ou du client. Les solutions automatisées de relance peuvent également les enregistrer sous forme d’enregistrements ou de tâches personnalisés. Collecte Enregistré comme e-mail ou 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 droits suffisants pour créer et exécuter des recherches enregistrées sur les enregistrements de transaction.
- Accédez aux recherches enregistrées : sélectionnez Reports > Saved Searches > All Saved Searches > New. Choisissez 'Transaction' dans la liste des types de recherche. Cette recherche servira de base à la création de plusieurs recherches, une pour chaque type d’événement.
- Créez la recherche 'Invoice Created' : il s’agit de la recherche principale qui capture la création des factures.
- Dans l’onglet 'Criteria', sous 'Standard', définissez le filtre 'Type' sur 'is Invoice'.
- Ajoutez un autre filtre pour 'Main Line' et définissez-le sur 'is true' afin d’obtenir un enregistrement par facture.
- Dans l’onglet 'Results', ajoutez les colonnes requises. Utilisez des formules pour créer des champs standardisés tels que 'ActivityName'. Par exemple, ajoutez un champ 'Formula (Text)' contenant la formule
_UTF8'Invoice Created'.
- Créez les recherches pour les changements d’état (approbation, paiement, annulation, clôture) : de nombreuses activités correspondent à des changements d’état. Le moyen le plus fiable de capturer l’horodatage exact consiste à utiliser les notes système.
- Créez une nouvelle recherche enregistrée de transactions.
- 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 d’état concerné, par exemple 'Approval Status'.
- Ajoutez un autre filtre 'System Notes : New Value' et définissez-le sur l’état cible, par exemple 'Approved'.
- Dans l’onglet 'Results', associez 'System Notes : Date' à
EventTimestampet 'System Notes : Set by' àUtilisateur. - Répétez cette procédure pour chaque activité fondée sur un état : 'Invoice Submitted for Approval', 'Invoice Approved', 'Invoice Paid In Full', 'Invoice Voided' et 'Invoice Closed', en adaptant les filtres de champ et de valeur en conséquence.
- Créez la recherche 'Invoice Sent to Customer' : cet événement est généralement capturé en suivant les e-mails envoyés depuis l’enregistrement de la facture.
- Créez une nouvelle recherche enregistrée de transactions avec 'Type' défini sur 'is Invoice'.
- Dans l’onglet 'Criteria', sous 'Related Records', ajoutez un filtre pour '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 les recherches pour les activités de paiement et d’avoir : ces activités concernent des types de transactions distincts liés à la facture.
- Pour 'Customer Payment Received', créez une recherche dont 'Type' est 'Customer Payment'. Capturez la date de création comme horodatage de l’événement.
- Pour 'Payment Applied To Invoice', utilisez la même recherche 'Customer Payment', mais ajoutez une jointure vers les champs 'Applied To Transaction'. La 'Date Created' de la transaction de paiement sert d’horodatage. Vous obtiendrez une ligne par imputation à une facture.
- Pour 'Credit Memo Created', créez une recherche dont 'Type' est 'Credit Memo' et utilisez le champ 'Created From' pour retrouver le numéro de facture d’origine.
- Exécutez et exportez chaque recherche enregistrée : exécutez chaque recherche enregistrée créée. Depuis la page des résultats, cliquez sur l’icône d’exportation (CSV, Excel ou PDF), puis choisissez CSV. Si le jeu de résultats dépasse la limite d’exportation de NetSuite, vous devrez peut-être effectuer l’exportation par lots.
- Regroupez et transformez les données : consolidez tous les fichiers CSV exportés dans un fichier unique à l’aide d’un outil comme Microsoft Excel, d’un script Python ou d’un outil de préparation des données.
- Déduisez l’événement 'Payment Due Date Reached' : dans le fichier de données regroupé, créez une nouvelle ligne pour chaque événement 'Invoice Created'. Définissez
ActivityNamesur 'Payment Due Date Reached',EventTimestampsur la valeur du champDueDatede la facture, puis copiez les autres attributs pertinents de la facture. - Finalisez le journal d’événements : standardisez tous les en-têtes de colonne afin qu’ils correspondent au schéma requis, par exemple
InvoiceNumber,ActivityNameetEventTimestamp. Vérifiez la cohérence des formats d’horodatage. Ajoutez les colonnesSourceSystemetLastDataUpdateavec des valeurs statiques pour ce lot d’extraction. Enregistrez le fichier consolidé final au format CSV pour l’importation.
Configuration
- Prérequis : Un rôle utilisateur disposant des autorisations nécessaires pour créer, modifier et exécuter des Saved Searches de type « Transaction » est requis. Vous devez également pouvoir consulter les enregistrements Invoice, Customer Payment, Credit Memo et System Notes.
- Type de recherche : Le type de recherche principal utilisé pour toutes les extractions est « Transaction ». Il permet d’accéder à tous les enregistrements et à toutes les relations nécessaires.
- Filtrage par période : Pour maîtriser les performances et le volume de données, appliquez un filtre de période à chaque recherche. Pour l’analyse initiale, il est recommandé de filtrer le champ « Date Created » sur les 3 à 6 derniers mois.
- Filtre Main Line : Utilisez le critère « Main Line » défini sur « true » pour les événements au niveau de l’en-tête du document, tels que « Invoice Created ». Définissez-le sur « false » lorsque vous devez analyser le détail des lignes, ce qui n’est pas nécessaire pour ce processus.
- System Notes : La capture des changements de statut repose largement sur les System Notes. Vérifiez que l’audit est activé pour les champs de transaction importants tels que « Status » et « Approval Status » dans votre configuration NetSuite (Setup > Company > Enable Features > SuiteCloud > SuiteAudit Trail).
- Considérations relatives aux performances : Les recherches complexes comportant de nombreuses jointures et formules sur une longue période peuvent être lentes à exécuter dans l’interface NetSuite. Il est conseillé d’exécuter et d’exporter ces recherches en dehors des heures de pointe. Si une recherche expire, réduisez la période et exportez les données par lots plus petits.
a 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 : activer 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 dans Setup > Company > Enable Features > Analytics.
- Télécharger et configurer le pilote ODBC : Accédez au 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 fournies par NetSuite pour installer et configurer le pilote, en renseignant votre hôte de service, votre port, votre Account ID, votre Role ID, votre adresse e-mail et votre mot de passe.
- Établir la connexion à la base de données : Utilisez un outil client SQL compatible avec les connexions ODBC, tel que DBeaver, Tableau ou Power BI. Créez une nouvelle connexion ODBC à l’aide du pilote configuré à l’étape précédente. Testez la connexion afin de vérifier que vous pouvez vous authentifier et accéder à la base de données read-replica de NetSuite.
- Préparer 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 requis pour le processus de facturation Order to Cash.
- Définir les paramètres de la requête : Avant l’exécution, repérez les valeurs de remplacement dans la requête. Vous devez remplacer
'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 que vous souhaitez analyser. - Exécuter la requête : Exécutez 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.
- Examiner les résultats : Une fois la requête terminée, un tableau plat représentant l’Event Log est renvoyé. Chaque ligne correspond à une activité précise du cycle de vie de la facture. Vérifiez l’exhaustivité et l’exactitude des données.
- Exporter l’Event Log : Exportez les résultats de la requête depuis votre client SQL dans un fichier CSV. Vérifiez que le fichier est encodé en UTF-8 afin d’éviter les problèmes de caractères.
- Préparer le chargement : Avant de charger le fichier dans un outil de Process Mining, vérifiez que les en-têtes de colonne correspondent aux noms d’attributs requis, tels que InvoiceNumber, ActivityName et EventTimestamp. Contrôlez également la cohérence des formats de date et d’heure.
Configuration
- Licence SuiteAnalytics Connect : Une licence valide pour le module SuiteAnalytics Connect est obligatoire pour accéder à la base de données read-replica de NetSuite. Sans cette licence, l’accès SQL direct n’est pas possible.
- Rôle et utilisateur dédiés : Il est vivement recommandé de créer un rôle NetSuite dédié, doté des autorisations appropriées pour SuiteAnalytics Connect. Ce rôle doit disposer d’un accès en lecture seule aux enregistrements nécessaires, notamment Transactions, Customers et System Notes. Attribuez un utilisateur dédié à ce rôle pour l’extraction, afin de garantir la sécurité et la traçabilité.
- Filtrage par période : La requête fournie contient une clause
WHEREsur la date de création de la facture (Transaction.TRANDATE). Pour les premières extractions, il est conseillé de commencer 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 : Pour les comptes comportant plusieurs filiales, le filtrage sur la filiale concernée est essentiel, tant pour les performances que pour la pertinence des données. La requête contient un espace réservé
WHERE T.SUBSIDIARY_ID = [Your Subsidiary ID]qui doit être configuré. - Actualité des données : La base de données SuiteAnalytics Connect est une read-replica. Les données sont généralement actualisées plusieurs fois par heure, mais elles ne sont pas disponibles en temps réel. Tenez compte d’un décalage potentiel de plusieurs heures entre l’enregistrement d’une transaction dans NetSuite et son apparition dans la base Connect.
a 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 ?
Utilisez ce modèle pour lancer votre initiative de Process Mining et obtenir une meilleure visibilité sur vos opérations de facturation et d’émission des factures. Commencez dès aujourd’hui à optimiser votre processus Order to Cash.
Optimisez dès maintenant votre facturation et l’émission de vos factures dans NetSuite pour accélérer vos encaissements
Réduisez de 30 % la durée du cycle de facturation NetSuite et améliorez vos flux de trésorerie.
Aucune carte bancaire requise. Configuration en quelques minutes.