Votre template de données Commande-Encaissement – Facturation et recouvrement
Votre template de données Commande-Encaissement – Facturation et recouvrement
- Attributs recommandés à collecter
- Activités clés à suivre
- Guide d'extraction pour NetSuite
Attributs du Cycle de la Commande au Paiement - Facturation et Recouvrement
| Nom | Description | ||
|---|---|---|---|
| Nom de l'activité ActivityName | Le nom de l'événement commercial qui s'est produit à un point spécifique du cycle de vie de la facture. | ||
| Description Le nom de l'activité décrit une étape ou un événement spécifique du processus de facturation, tel que « Facture créée », « Facture approuvée » ou « Paiement client reçu ». Ces activités constituent les éléments séquentiels fondamentaux de la cartographie des processus. L'analyse de la séquence et de la fréquence de ces activités est essentielle au process mining. Elle aide à visualiser le flux de processus réel, à identifier les parcours de processus courants et rares (variantes), et à cibler les activités fréquemment répétées, ce qui indique un retravail ou une inefficacité. Pourquoi c'est important Cet attribut est fondamental pour la construction de la cartographie des processus, permettant la visualisation et l'analyse des différentes étapes et chemins qu'une facture emprunte. Où obtenir Dérivé des journaux système, des changements de statut ou d'enregistrements d'événements spécifiques associés à la transaction Invoice dans NetSuite. Cela nécessite souvent de mapper les changements de statut de transaction ou les créations d'enregistrements connexes à des noms d'activités définis. Exemples Facture crééeFacture approuvéePaiement client reçuFacture entièrement payée | |||
| Numéro de facture InvoiceNumber | L'identifiant unique de chaque document de facture, servant d'identifiant de cas principal pour le processus de facturation. | ||
| Description Le numéro de facture est la pierre angulaire de l'analyse du processus de facturation, identifiant de manière unique chaque facture de sa création à sa clôture finale. Il regroupe toutes les activités connexes, telles que l'approbation, l'envoi et l'application des paiements, en un cas unique et cohérent. En process mining, l'analyse du parcours de chaque numéro de facture permet une vue d'ensemble complète du cycle de vie de la facturation. Cela permet d'identifier les variantes de processus, les goulots d'étranglement et les écarts par rapport à la procédure standard, fournissant des insights critiques pour optimiser la trésorerie et l'efficacité opérationnelle. Pourquoi c'est important Il est essentiel pour suivre le cycle de vie de bout en bout de chaque facture, permettant la reconstruction de l'ensemble du processus de facturation et une analyse détaillée des performances. Où obtenir Il s'agit généralement du champ « ID de transaction » ou d'un champ d'identifiant unique similaire sur l'enregistrement de transaction de facture dans NetSuite. Exemples INV-0012345INV-0012346INV-0012347 | |||
| Timestamp de l'événement EventTimestamp | La date et l'heure précises auxquelles une activité ou un événement spécifique s'est produit. | ||
| Description Cet attribut enregistre le moment exact où une activité a eu lieu. C'est un composant essentiel pour ordonner les événements chronologiquement et pour toutes les analyses basées sur le temps. En process mining, l'horodatage de l'événement est utilisé pour calculer les temps de cycle entre les activités, les durées des cas et les temps d'attente. Il est essentiel pour identifier les goulots d'étranglement, mesurer la performance du processus par rapport aux SLA et comprendre la dynamique temporelle du processus de facturation. Par exemple, il est utilisé pour calculer le temps de cycle de génération des factures et le Days Sales Outstanding (DSO). Pourquoi c'est important Il fournit l'ordre chronologique des événements, ce qui est essentiel pour calculer toutes les métriques basées sur la durée, identifier les goulots d'étranglement et analyser la performance du processus au fil du temps. Où obtenir Les informations d'horodatage se trouvent généralement dans les notes système, les pistes d'audit ou les champs « Date de création » des enregistrements connexes pour chaque transaction de facture dans NetSuite. Exemples 2023-10-26T10:00:00Z2023-10-27T14:30:00Z2023-11-15T09:05:00Z | |||
| Dernière mise à jour des données LastDataUpdate | Le timestamp indiquant la dernière fois que les données ont été actualisées à partir du système source. | ||
| Description Cet attribut enregistre la dernière mise à jour de l'ensemble de données. Il fournit un contexte sur la fraîcheur et la pertinence de l'analyse process mining. Les analystes et les parties prenantes métier utilisent ces informations pour savoir si les insights reflètent l'état opérationnel le plus récent. C'est un élément de métadonnées critique pour tout tableau de bord ou rapport, garantissant que les décisions sont basées sur des données d'un âge connu et ne sont pas mal interprétées comme étant en temps réel si ce n'est pas le cas. Pourquoi c'est important Cela informe les utilisateurs sur la fraîcheur des données, s'assurant qu'ils comprennent le cadre temporel de l'analyse et la pertinence des insights. Où obtenir Cet horodatage est généré et enregistré par l'outil ou le pipeline d'extraction de données au moment de l'actualisation des données. Exemples 2024-05-21T02:00:00Z | |||
| Système source SourceSystem | Le système d'où les données ont été extraites. | ||
| Description Cet attribut identifie l'origine des données du processus. Pour cette vue, il s'agirait systématiquement de « NetSuite ». Dans un contexte d'analyse plus large, en particulier dans les organisations dotées de plusieurs ERP ou de systèmes intégrés, cet attribut est crucial pour la lignée et la gouvernance des données. Il aide à différencier les processus qui pourraient s'étendre sur différentes plateformes et garantit que l'analyse est correctement attribuée au système d'enregistrement approprié. Pourquoi c'est important Il fournit un contexte crucial pour l'origine et la gouvernance des données, en particulier dans les environnements où plusieurs systèmes pourraient être intégrés. Où obtenir Il s'agit d'une valeur statique (« NetSuite ») ajoutée pendant le processus d'extraction et de transformation des Exemples NetSuite | |||
| Date d'échéance DueDate | La date à laquelle le paiement de la facture est dû. | ||
| Description La date d'échéance est calculée en fonction de la date de facture et des conditions de paiement convenues. Elle représente la date limite pour que le client effectue un paiement sans être considéré en retard. Cet attribut est essentiel pour le suivi des comptes clients et la gestion de la trésorerie. C'est la référence utilisée pour calculer le KPI du Taux de paiement à temps et pour analyser le comportement de paiement des clients. Le suivi des écarts par rapport à la date d'échéance permet d'identifier les clients qui paient fréquemment en retard et d'évaluer l'efficacité des stratégies de recouvrement. Pourquoi c'est important Il est essentiel pour mesurer la performance des paiements à temps et analyser le comportement de paiement des clients, soutenant directement le recouvrement et la prévision des flux de trésorerie. Où obtenir Cela correspond au champ « Date d'échéance » (duedate) de l'enregistrement de transaction de facture dans NetSuite. Exemples 2023-11-252023-11-262023-12-15 | |||
| Date de la facture InvoiceDate | La date officielle de la facture, telle qu'elle a été émise au client. | ||
| Description La date de facture, ou date de transaction, est le point de départ de nombreux calculs financiers liés à la facturation. C'est la date à partir de laquelle les conditions de paiement et les dates d'échéance sont généralement calculées. En analyse, cette date sert de point d'ancrage principal pour le calcul des KPI financiers clés tels que le Days Sales Outstanding (DSO) et le vieillissement des factures. Elle permet une analyse par cohorte, facilitant la comparaison des performances de facturation sur différentes périodes, par exemple, d'un mois à l'autre ou d'une année sur l'autre. Pourquoi c'est important Cette date est la référence pour les métriques financières critiques comme le Days Sales Outstanding (DSO) et le vieillissement des factures, ayant un impact direct sur l'analyse du fonds de roulement. Où obtenir Cela correspond au champ « Date » (trandate) de l'enregistrement de transaction de facture dans NetSuite. Exemples 2023-10-262023-10-272023-11-15 | |||
| Est Automatisé IsAutomated | Un indicateur signalant si une activité a été effectué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 workflow, un script ou une intégration système. Cet attribut est essentiel pour mesurer le niveau d'automatisation dans le processus de facturation, soutenant directement le KPI du « Taux de facturation automatisée ». En filtrant les activités automatisées ou manuelles, les analystes peuvent identifier les goulots d'étranglement causés par une intervention manuelle et repérer les opportunités d'augmenter 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, identifiant les opportunités de réduire l'effort manuel et d'augmenter l'efficacité. Où obtenir Cela est généralement dérivé en vérifiant l'« Utilisateur » associé à une activité. Les événements déclenchés par des utilisateurs nommés « SYSTEM », « Workflow » ou « Intégration » sont signalés comme automatisés. Exemples truefaux | |||
| Heure de fin de l'événement EventEndTime | La date et l'heure précises auxquelles une activité ou un événement spécifique a été achevé. | ||
| Description L'heure de fin de l'événement marque l'achèvement d'une activité. Bien que de nombreuses activités soient instantanées (les heures de début et de fin sont identiques), certaines, comme une étape d'approbation, peuvent avoir une durée mesurable. Cet attribut, conjointement avec l'horodatage de l'événement (heure de début), permet le calcul direct du temps de traitement de l'activité. L'analyse du temps de traitement aide à identifier les étapes spécifiques qui consomment le plus de temps et de ressources, en le distinguant du temps d'attente entre les activités. C'est crucial pour identifier les inefficiences au sein de tâches spécifiques. Pourquoi c'est important Il permet le calcul précis du temps nécessaire pour accomplir chaque activité, ce qui est essentiel pour analyser l'efficacité des ressources et identifier les tâches chronophages. Où obtenir Similaire à StartTime, ceci peut être extrait des journaux d'audit système de NetSuite. Cela peut nécessiter une logique pour associer un événement « début » à un événement « fin » correspondant. Exemples 2023-10-26T10:05:14Z2023-10-27T14:32:00Z2023-11-15T09:05:00Z | |||
| Montant total de la facture InvoiceTotalAmount | La valeur monétaire totale de la facture, y compris les taxes et autres frais. | ||
| Description Cet attribut représente le montant total que le client est censé payer. C'est une donnée financière fondamentale pour chaque cas de facturation. L'analyse du processus basée sur le montant de la facture permet une analyse basée sur la valeur. Par exemple, elle peut révéler si les factures de grande valeur suivent un processus différent et plus complexe que celles de faible valeur. Elle est également utilisée pour prioriser 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 des processus basée sur la valeur, aidant à prioriser les factures de grande valeur et à comprendre l'impact financier des inefficiences des processus. Où obtenir Cela correspond au champ « Total » (total) de l'enregistrement de transaction de facture dans NetSuite. Exemples 1500.0089.9912500.50 | |||
| Nom du client CustomerName | Le nom du client à qui la facture a été émise. | ||
| Description Cet attribut identifie l'entité juridique ou l'individu facturé. Il relie le processus de facturation à la fonction de gestion de la relation client. L'analyse du processus de facturation par client aide à identifier les modèles de comportement de paiement, les litiges ou la complexité des factures pour des clients spécifiques. Cela peut éclairer les stratégies de segmentation client, les décisions de limite de crédit et les approches de recouvrement adaptées. Par exemple, cela peut révéler si un client particulier a systématiquement des factures qui nécessitent un retravail. Pourquoi c'est important Il permet une analyse centrée sur le client, aidant à identifier les schémas de paiement, les problèmes fréquents ou les déviations de processus spécifiques à certains clients. Où obtenir Cela correspond au champ de nom « Client » ou « Entité » de l'enregistrement de transaction de facture 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 Région classe les factures en fonction de la géographie, qui pourrait être dérivée de l'adresse du client ou de l'unité commerciale qui a émis la facture. C'est une dimension puissante pour l'analyse comparative. Le tableau de bord « Comparaison des processus de facturation régionaux » s'appuie sur cet attribut pour comparer les KPI comme les temps de cycle, les taux d'erreur et les variantes de processus dans différentes régions. Cela aide à identifier les différences de performance régionales, à découvrir les meilleures pratiques dans les régions les plus performantes et à promouvoir les efforts de standardisation des processus à l'échelle de l'organisation. Pourquoi c'est important Il permet une analyse comparative entre différentes zones géographiques, ce qui est essentiel pour identifier les écarts de performance régionaux et standardiser les meilleures pratiques. Où obtenir Ces données sont souvent stockées dans un segment personnalisé ou un champ de classification sur l'enregistrement du client maître ou de la transaction dans NetSuite. Exemples Amérique du NordEMEAAPAC | |||
| Utilisateur User | Le nom ou l'`ID` de l'`utilisateur` qui a effectué l'`activité`. | ||
| Description Cet attribut identifie l'employé ou l'utilisateur système responsable de l'exécution d'une étape de processus spécifique. Il peut s'agir de la personne qui a créé la facture, l'a approuvée ou a appliqué le paiement. L'analyse du processus par utilisateur aide à comprendre la répartition de la charge de travail, la performance individuelle et à identifier les besoins en formation. Elle peut également mettre en évidence des opportunités d'automatisation potentielles en montrant quelles activités manuelles sont effectuées par le plus grand nombre d'utilisateurs. C'est également essentiel pour l'analyse de la conformité et des pistes d'audit. Pourquoi c'est important Il permet l'analyse de la répartition de la charge de travail, de la performance spécifique des utilisateurs et de l'adhérence aux processus, ce qui est vital pour la gestion des ressources et la formation ciblée. Où obtenir Disponible dans le sous-onglet System Notes ou des champs spécifiques 'Modified By' sur les enregistrements d'Invoice et de 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 conditions de paiement définissent quand et comment un client est censé payer sa facture, par exemple, 'Net 30' ou 'Dû à réception'. Cette information est utilisée pour calculer automatiquement la date d'échéance de la facture. Cet attribut est crucial pour le tableau de bord 'Adhérence aux conditions de paiement'. L'analyse des taux de paiement à temps selon différentes conditions de paiement aide à évaluer leur efficacité. Par exemple, cela peut montrer si les clients avec des conditions 'Net 15' paient plus rapidement que ceux avec 'Net 30', éclairant ainsi les futures négociations de contrats 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 impact sur la ponctualité des paiements clients. Où obtenir Cela correspond au champ « Conditions » de l'enregistrement de transaction de facture dans NetSuite. Exemples Net 30Net 60Dû à réception | |||
| Délai moyen de recouvrement DaysSalesOutstanding | Le nombre de jours entre la date de facture et la date de réception du paiement. | ||
| Description Le Délai Moyen de Recouvrement (DSO) est une métrique financière clé qui mesure le nombre moyen de jours nécessaires pour collecter un paiement après l'émission d'une facture. Cet attribut est calculé pour chaque facture individuelle afin de permettre une analyse détaillée. Bien que souvent agrégé comme un KPI de haut niveau, disposer du DSO au niveau de la facture individuelle permet une analyse puissante. Il peut être utilisé pour identifier quels clients, régions ou types de factures ont le DSO le plus élevé. Le tableau de bord 'Tendance DSO' s'appuie sur cette métrique pour visualiser l'efficacité du recouvrement au fil du temps, fournissant des insights critiques sur la gestion du fonds de roulement. Pourquoi c'est important Il quantifie l'efficacité du recouvrement au niveau de chaque facture, permettant une analyse détaillée des causes profondes d'un DSO élevé et de son impact sur les flux de trésorerie. Où obtenir Calculé en soustrayant la 'InvoiceDate' de l'horodatage de l'activité 'Customer Payment Received'. Exemples 294562 | |||
| Département Department | Le département interne associé à la facture. | ||
| Description Cet attribut représente le département interne, tel que Ventes, Services ou une ligne d'activité spécifique, responsable de la transaction. Il s'agit d'un segment de classification standard dans NetSuite. L'analyse du processus par département permet le benchmarking interne et aide à identifier si certains départements ont des processus de facturation plus efficaces que d'autres. Elle peut révéler des variations dans l'adhérence aux processus ou l'allocation des ressources, fournissant des insights pour des initiatives d'amélioration des processus ciblées au sein de parties spécifiques de l'organisation. Pourquoi c'est important Il permet de comparer la performance des processus entre différents départements internes, mettant en évidence les variations et les opportunités de standardisation des processus internes. Où obtenir Cela correspond au champ de classification « Département », qui peut être défini au niveau de l'en-tête ou de la ligne d'une transaction de facture dans NetSuite. Exemples Ventes - EntreprisesServices professionnelsHardware | |||
| Devise Currency | Le code de devise pour le montant de la facture. | ||
| Description Cet attribut spécifie la devise dans laquelle le montant de la facture est libellé, par exemple, USD, EUR ou GBP. C'est un contexte essentiel pour toute valeur monétaire. Pour les organisations multinationales, l'analyse par devise est importante pour comprendre la performance financière sur différents marchés. Elle garantit que les valeurs monétaires sont interprétées correctement et permet une agrégation et une comparaison appropriées après conversion de devise, si nécessaire. Pourquoi c'est important Il fournit le contexte nécessaire pour toutes les valeurs monétaires, ce qui est crucial pour des rapports financiers et des analyses précis, en particulier dans les opérations multinationales. Où obtenir Cela correspond au champ « Devise » de l'enregistrement de transaction de facture dans NetSuite. Exemples USDEURGBP | |||
| Est un paiement à temps IsOnTimePayment | Un indicateur signalant si le paiement client a été reçu à la date d'échéance de la facture ou avant. | ||
| Description Cet indicateur booléen calculé compare l'horodatage de l'activité « Paiement client reçu » avec la « Date d'échéance » de la facture. Il est défini sur vrai si le paiement a été effectué à temps ou en avance, et sur faux s'il a été en retard. Cet attribut est la base du KPI du « Taux de paiement à temps » et du tableau de bord « Adhésion aux conditions de paiement ». Il fournit une mesure binaire claire du comportement de paiement des clients, simplifiant l'analyse et le reporting. Il aide à identifier rapidement les tendances en matière de ponctualité des paiements et à évaluer l'efficacité des stratégies de recouvrement. Pourquoi c'est important Cela fournit une métrique de succès claire pour les recouvrements, soutenant directement le calcul du KPI du Taux de paiement à temps et l'analyse du comportement client. Où obtenir Il s'agit d'un attribut calculé. Il nécessite de comparer l'horodatage de l'événement de paiement avec l'attribut « Date d'échéance » au niveau du cas. Exemples truefaux | |||
| Est un retravail 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 est défini sur vrai pour les activités qui représentent un retravail sans valeur ajoutée, telles que « Facture corrigée » ou un deuxième événement « Facture approuvée » au sein du même cas. Il est généralement dérivé en fonction du nom de l'activité ou de la répétition d'une activité. Cet attribut est essentiel pour le tableau de bord « Analyse des retravaux et rejets de factures » et le KPI du « Taux d'erreur des factures ». Il permet une quantification facile du retravail, aidant à mettre en évidence les problèmes de qualité des processus. En filtrant les activités de retravail, les équipes peuvent rapidement identifier les causes profondes des erreurs et mesurer l'impact des initiatives d'amélioration des processus. Pourquoi c'est important Il mesure directement la qualité des processus en signalant les boucles de reprise inefficaces, permettant l'analyse des causes profondes et de l'impact financier des erreurs de facturation. Où obtenir Il s'agit d'un attribut dérivé calculé lors de la transformation des données. Une logique est appliquée pour identifier le retravail, comme le marquage de noms d'activité spécifiques (« Facture corrigée ») ou d'activités répétées. Exemples truefaux | |||
| Numéro de commande de vente SalesOrderNumber | L'identifiant de la commande client à partir de laquelle la facture a été générée. | ||
| Description Cet attribut fournit un lien direct vers la commande client d'origine, connectant le processus de facturation aux processus de vente et d'exécution précédents. L'inclusion du numéro de commande client permet une vue plus holistique de l'ensemble du cycle Commande-Encaissement. Elle permet une analyse qui peut retracer les problèmes de facturation jusqu'à leur source dans le processus de vente. Par exemple, des corrections de facture fréquentes pourraient être liées à des erreurs de saisie de données sur des types spécifiques de commandes client. Pourquoi c'est important Il relie le processus de facturation au processus de vente, permettant une analyse plus large et de bout en bout du Cycle de la Commande au Paiement pour identifier les causes profondes des problèmes de facturation. Où obtenir Trouvé dans le champ 'Created From' ou dans le sous-onglet 'Related Records' d'une transaction Invoice dans NetSuite. Exemples SO-0009876SO-0009877SO-0009878 | |||
| 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, tel que « Ouverte », « Entièrement payée » ou « Annulée ». Il fournit un aperçu de l'emplacement de la facture dans le processus à un moment donné. Le tableau de bord « Aperçu du statut des factures ouvertes » est directement construit sur cet attribut. Il permet une évaluation en temps réel des comptes clients, aidant les équipes financières à surveiller les soldes impayés, à gérer les recouvrements et à prévoir les flux de trésorerie. L'analyse du statut final aide également à comprendre les résultats du processus. Pourquoi c'est important Il fournit un aperçu de l'état actuel des créances clients, permettant des tableaux de bord qui surveillent les factures ouvertes et l'avancement global de la facturation. Où obtenir Cela correspond au champ « Statut » de l'enregistrement de transaction de facture dans NetSuite. Exemples OuvertPayé en totalitéAnnuléeEn attente d'approbation | |||
| Temps de traitement de l'activité ActivityProcessingTime | La durée du temps passé à travailler activement sur une `activité` spécifique. | ||
| Description Cette métrique calculée mesure le temps écoulé entre l'horodatage de début et de fin d'une seule activité. Elle représente la durée de travail réelle, par opposition au temps d'attente entre les activités. C'est une métrique critique pour le tableau de bord « Débit d'activité et goulots d'étranglement ». En analysant les temps de traitement, les équipes peuvent identifier les tâches spécifiques qui sont les plus chronophages et gourmandes en ressources. Cela permet des améliorations ciblées, telles que l'amélioration de la formation, de la performance du système ou l'automatisation de la tâche. Pourquoi c'est important Il quantifie l'effort réel pour chaque tâche, aidant à distinguer le temps de travail actif du temps d'attente inactif et à cibler les activités inefficaces. Où obtenir Calculé en soustrayant l'EventTimestamp (StartTime) de l'EventEndTime pour chaque enregistrement d'activité. Exemples 300601200 | |||
Activités du Cycle de la Commande au Paiement - Facturation et Recouvrement
| Activité | Description | ||
|---|---|---|---|
| Facture approuvée | La facture a été formellement approuvée et est prête à être envoyée au client. Cela est capturé lorsque le statut d'approbation passe de « En attente d'approbation » à « Approuvé », généralement via une action de workflow. | ||
| Pourquoi c'est important Une étape clé qui empêche l'envoi de la facture au client. Elle est cruciale pour mesurer les temps de cycle d'approbation et pour calculer l'indicateur clé de performance (KPI) du 'Taux de facturation automatisée'. Où obtenir Déduit du champ 'Approval Status' de l'enregistrement Invoice passant à 'Approved'. L'horodatage précis est enregistré dans les system notes pour la transaction. Capture Déduit du changement du champ 'Approval Status' à 'Approved' dans les system notes. Type d'événement inferred | |||
| Facture créée | Marque la création officielle de l'enregistrement de transaction de facture dans NetSuite. Cet événement est le point de départ du processus de facturation pour chaque numéro de facture unique et est capturé à partir de l'horodatage de création de la transaction. | ||
| Pourquoi c'est important C'est le principal événement de début du processus de facturation. L'analyse du temps écoulé entre cet événement et les autres révèle l'efficacité globale du processus et constitue la base du KPI du « Temps de cycle de génération des factures ». Où obtenir Capturé à partir de l'horodatage 'Date Created' sur l'enregistrement de transaction Invoice. Les System Notes de NetSuite pour la facture enregistrent également explicitement l'événement de création et l'utilisateur. Capture Événement enregistré lors de la création de l'enregistrement de transaction Invoice. Type d'événement explicit | |||
| Facture entièrement payée | Le statut de la facture est passé à « Entièrement payée », indiquant que son solde est désormais nul. C'est la conclusion réussie du cycle de facturation et de recouvrement de la facture. | ||
| Pourquoi c'est important C'est le principal événement de fin réussi du processus. L'analyse du temps total pour atteindre cet état fournit le temps de cycle de bout en bout pour le cycle de conversion des fonds. Où obtenir Déduit du champ 'Status' de l'enregistrement Invoice passant à 'Paid In Full'. L'horodatage de ce changement de statut est disponible dans les system notes de la transaction. Capture Déduit du changement du champ 'Status' à 'Paid In Full' dans les system notes. Type d'événement inferred | |||
| 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 capturé en suivant le moment où un utilisateur exécute l'action « E-mail » à partir de l'enregistrement de la facture. | ||
| Pourquoi c'est important Cela marque le début de la période de recouvrement client et est le point de départ principal pour le calcul du Days Sales Outstanding (DSO). Où obtenir Déduit du remplissage du champ 'Date Last Emailed' sur l'enregistrement Invoice. Alternativement, il peut être capturé à partir de la création d'un enregistrement de message e-mail sous le sous-onglet Communication. Capture Déduit du remplissage de 'Date Last Emailed' ou de la création d'un enregistrement de communication. Type d'événement inferred | |||
| Paiement client reçu | Un paiement a été reçu du client et enregistré dans le système. Ceci est capturé par la création d'une transaction 'Customer Payment' dans NetSuite, qui peut s'appliquer à une ou plusieurs factures. | ||
| Pourquoi c'est important Marque la réception de fonds, mais pas nécessairement son application à une facture spécifique. C'est la première étape du processus d'application des fonds et un événement clé pour les calculs de DSO. Où obtenir Capturé à partir de la date de création de l'enregistrement de transaction 'Customer Payment'. La connexion à la facture est effectuée sur le sous-onglet 'Apply' du paiement. Capture Création d'un enregistrement de transaction Customer Payment. Type d'événement explicit | |||
| Avoir émis | Une transaction de note de crédit a été créée et appliquée à la facture, réduisant le solde dû. Cela indique généralement un retour de produit, une plainte de service ou une correction de prix. | ||
| Pourquoi c'est important Met en évidence les reprises, les problèmes de qualité ou les litiges clients. Les occurrences fréquentes peuvent signaler des problèmes sous-jacents et sont essentielles pour le tableau de bord 'Analyse des reprises et rejets de factures'. Où obtenir Capturé à partir de la création d'une transaction Credit Memo. Le lien vers la facture originale se trouve dans le champ 'Created From' ou sur le sous-onglet 'Apply' de la note de crédit. Capture Création d'un enregistrement de Credit Memo lié à la facture originale. Type d'événement explicit | |||
| Date d'échéance de paiement atteinte | Un événement calculé qui se produit lorsque la date actuelle correspond à la date d'échéance de la facture. Cet événement ne correspond pas à une action directe d'utilisateur ou de système, mais est dérivé de données existantes pendant l'analyse. | ||
| Pourquoi c'est important Agit comme un repère critique pour mesurer la ponctualité des paiements. Il est essentiel pour calculer le KPI du 'Taux de paiement à temps' et analyser les comportements de paiement des clients. Où obtenir Ce n'est pas un événement explicite dans NetSuite. Il est calculé en comparant l'horodatage du journal d'événements au champ « Date d'échéance » de l'enregistrement de transaction de facture. Capture Calculé lorsque l'horodatage de l'événement est égal au champ 'Due Date' de la facture. Type d'événement calculated | |||
| 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 qu'elle a été entièrement payée et rapprochée. | ||
| Pourquoi c'est important Bien que se produisant souvent après « Entièrement payée », il peut s'agir d'une étape administrative finale. L'analyse des retards entre le paiement et la clôture pourrait impacter la ponctualité des rapports financiers. Où obtenir Déduit du champ 'Status' passant à 'Closed' ou un état similaire. L'horodatage de ce changement est capturé à partir des system notes. Capture Déduit du changement du champ 'Status' dans les system notes. Type d'événement inferred | |||
| Facture invalidée | La facture a été annulée, l'annulant effectivement et annulant tout impact sur le grand livre général. Cette action est généralement prise pour les factures créées par erreur avant d'être payées. | ||
| 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 de données ou des erreurs de processus nécessitant une correction en amont. Où obtenir Il s'agit d'une action utilisateur explicite. Elle peut être capturée à partir des notes système de l'enregistrement de facture, qui consigne le moment où la transaction a été annulée et par qui. Capture Action 'Void' explicite enregistrée dans les System Notes de la facture. Type d'événement explicit | |||
| Facture soumise pour approbation | Représente le changement de statut de la facture à « En attente d'approbation ». Cet événement est capturé lorsqu'un utilisateur soumet la facture dans un workflow d'approbation configuré, ce qui est une personnalisation courante. | ||
| Pourquoi c'est important Cette activité identifie le début d'un potentiel goulot d'étranglement d'approbation. Le temps passé en attente d'approbation est un élément clé du temps de cycle global de traitement des factures. Où obtenir Déduit du champ 'Approval Status' de l'enregistrement Invoice passant à 'Pending Approval'. L'horodatage de ce changement se trouve dans la piste d'audit des system notes pour la facture. Capture Déduit du changement du champ 'Approval Status' enregistré dans les system notes. Type d'événement inferred | |||
| Paiement appliqué à la facture | Le paiement client reçu a été spécifiquement appliqué à cette facture, réduisant son montant dû. Ceci est enregistré lorsque l'application est sauvegardée sur l'enregistrement de paiement client. | ||
| Pourquoi c'est important C'est le lien crucial entre la réception des encaissements et le règlement des factures. La durée entre « Paiement reçu » et cet événement définit le KPI du « Temps de cycle d'application des encaissements ». Où obtenir Capturé à partir des System Notes ou de la piste d'audit de la transaction Customer Payment, spécifiquement lorsque l'application à la ligne de facture est enregistrée. L'horodatage de cette application est clé. Capture Enregistré lorsque l'enregistrement de Customer Payment est sauvegardé avec une application à la facture. Type d'événement explicit | |||
| Rappel de paiement émis | Une communication a été envoyée au client concernant un paiement en souffrance. Cela est capturé comme une activité enregistrée ou un e-mail envoyé depuis l'enregistrement de la facture ou du client, souvent par une solution de relance. | ||
| Pourquoi c'est important Essentiel pour évaluer l'efficacité des stratégies de recouvrement. L'analyse de l'impact de cette activité sur les paiements ultérieurs aide à optimiser la fréquence et le calendrier des rappels. Où obtenir Capturé à partir de la création d'un enregistrement d'e-mail sous l'onglet Communication > Messages de l'enregistrement Invoice ou Customer. Les solutions de relance automatisées peuvent également les enregistrer comme des enregistrements personnalisés ou des tâches. Capture Enregistré comme un e-mail ou un enregistrement d'activité associé à la facture. Type d'événement explicit | |||
Guides d'extraction
Étapes
- Connectez-vous à NetSuite : Accédez à votre compte NetSuite en utilisant un rôle doté d'autorisations suffisantes pour créer et exécuter des 'Saved Searches' sur les enregistrements de transaction.
- Accédez aux Saved Searches : Allez dans Rapports > Saved Searches > Toutes les Saved Searches > Nouveau. Sélectionnez 'Transaction' dans la liste des types de recherche. Cela servira de base pour créer plusieurs recherches, une pour chaque type d'événement.
- Créez la recherche 'Invoice Created' : C'est 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' pour obtenir un enregistrement par facture.
- Dans l'onglet 'Results', ajoutez les colonnes requises. Utilisez des formules pour créer des champs standardisé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 (Approval, Paid, Voided, Closed) : De nombreuses activités sont des changements de statut. Le moyen le plus fiable de capturer l'horodatage exact est via les System Notes.
- Créez une nouvelle 'Transaction Saved Search'.
- Dans l'onglet 'Criteria', définissez 'Type' sur 'is Invoice'.
- Sous l'onglet 'Standard', ajoutez le filtre 'System Notes : Field' et sélectionnez le champ de statut pertinent, par exemple, 'Approval Status'.
- Ajoutez un autre filtre 'System Notes : New Value' et définissez-le sur le statut cible, par exemple, 'Approved'.
- Dans l'onglet 'Results', mappez 'System Notes : Date' à
EventTimestampet 'System Notes : Set by' àUser. - Répétez ce processus pour chaque activité basée sur le statut : 'Invoice Submitted for Approval', 'Invoice Approved', 'Invoice Paid In Full', 'Invoice Voided' et 'Invoice Closed', en ajustant 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 messages électroniques envoyés depuis l'enregistrement de facture.
- Créez une nouvelle 'Transaction Saved Search' 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', mappez 'Messages : Date Sent' à
EventTimestampet 'Messages : Author' àUser.
- Créez des recherches pour les activités de paiement et de note de crédit : Celles-ci impliquent des types de transaction distincts liés à la facture.
- Pour 'Customer Payment Received', créez une recherche pour '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 joignez-vous aux champs 'Applied To Transaction'. La 'Date de création' de la transaction de paiement sert d'horodatage. Vous obtiendrez une ligne par application de facture.
- Pour 'Credit Memo Created', créez une recherche pour 'Type' est 'Credit Memo' et liez-vous au champ 'Created From' pour obtenir le numéro de facture original.
- Exécutez et exportez chaque Saved Search : Exécutez chaque 'Saved Search' que vous avez créée. Depuis la page des résultats, cliquez sur l'icône d'exportation (CSV, Excel ou PDF) et choisissez CSV. Vous devrez peut-être exporter par lots si l'ensemble de résultats est supérieur à votre limite d'exportation NetSuite.
- Combinez et transformez les données : Consolidez tous les fichiers CSV exportés en un seul fichier à l'aide d'un outil comme Microsoft Excel, un script Python ou un outil de préparation des données.
- Dérivez l'événement 'Payment Due Date Reached' : Dans votre fichier de données combiné, pour chaque événement 'Invoice Created', créez une nouvelle ligne. Définissez le
ActivityNamesur 'Payment Due Date Reached', leEventTimestampsur la valeur du champDueDatede la facture, et copiez les autres attributs de facture pertinents. - Finalisez le journal d'événements : Standardisez tous les en-têtes de colonne pour qu'ils correspondent au schéma requis (par exemple,
InvoiceNumber,ActivityName,EventTimestamp). Assurez-vous que les formats d'horodatage sont cohérents. Ajoutez les colonnesSourceSystemetLastDataUpdateavec des valeurs statiques pour ce lot d'extraction. Enregistrez le fichier consolidé final au format CSV pour le téléchargement.
Configuration
- Prérequis : Un rôle utilisateur avec les autorisations de créer, modifier et exécuter des 'Saved Searches' de type 'Transaction' est requis. L'accès pour consulter les enregistrements 'Invoice', 'Customer Payment', 'Credit Memo' et 'System Notes' est également nécessaire.
- Type de recherche : Le type de recherche principal utilisé pour toutes les extractions est 'Transaction'. Ce type permet d'accéder à tous les enregistrements nécessaires et à leurs relations.
- Filtrage par plage de dates : Pour gérer la performance et le volume de données, appliquez un filtre de plage de dates à chaque recherche. Un filtre sur 'Date de création' pour une période des 3 à 6 derniers mois est recommandé pour l'analyse initiale.
- 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, tel que 'Invoice Created'. Définissez-le sur 'false' lorsque vous devez analyser les détails des lignes, ce qui n'est pas requis pour ce processus.
- Notes système : La capture des changements de statut repose fortement sur les System Notes. Assurez-vous que l'audit est activé pour les champs de transaction clés comme 'Status' et 'Approval Status' dans votre configuration NetSuite (Configuration > Société > Activer les fonctionnalités > SuiteCloud > SuiteAudit Trail).
- Considérations de performance : Les recherches complexes avec de nombreuses jointures et des champs de formule sur une large plage de dates peuvent être lentes à exécuter dans l'interface utilisateur de NetSuite. Il est conseillé d'exécuter et d'exporter ces recherches pendant les heures creuses. Si une recherche expire, réduisez la plage de dates et exportez les données par petits lots.
a Exemple de requête config
/*
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 : Assurez-vous que le module SuiteAnalytics Connect est sous licence et activé dans votre instance NetSuite. Cela est généralement effectué par un administrateur NetSuite sous Configuration > Société > Activer les fonctionnalités > Analyse.
- Télécharger et configurer le pilote ODBC : Naviguez vers le tableau de bord NetSuite et localisez le portlet 'Settings'. Cliquez sur le lien 'Set Up SuiteAnalytics Connect' pour télécharger le pilote ODBC approprié à votre système d'exploitation. Suivez les instructions d'installation fournies par NetSuite pour installer et configurer le pilote, en fournissant votre hôte de service, port, ID de compte, ID de rôle, e-mail et mot de passe.
- Établir une connexion à la base de données : Utilisez un outil client SQL qui prend en charge les connexions ODBC, tel que DBeaver, Tableau ou Power BI. Créez une nouvelle connexion ODBC à l'aide du pilote que vous avez configuré à l'étape précédente. Testez la connexion pour vous assurer que vous pouvez vous authentifier et accéder avec succès à la base de données répliquée en lecture de NetSuite.
- Préparer la requête SQL : Copiez la requête SQL complète fournie dans la section 'Query' de ce document. Cette requête est conçue pour extraire toutes les activités et attributs requis pour le processus de facturation du Cycle de la Commande au Paiement.
- Définir les paramètres de la requête : Avant l'exécution, localisez les valeurs de remplacement dans la requête. Vous devez remplacer
'YYYY-MM-DD'par vos dates de début et de fin souhaitées pour la période d'extraction. Remplacez également[Your Subsidiary ID]par l'ID 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. Le temps d'exécution variera en fonction de la plage de dates et du volume de transactions dans votre compte NetSuite.
- Examiner les résultats : Une fois la requête terminée, une table plate représentant le journal d'événements (event log) sera renvoyée. Chaque ligne correspond à une activité spécifique dans le cycle de vie de la facture. Examinez les données pour en vérifier l'exhaustivité et la précision.
- Exporter le journal d'événements : Exportez les résultats de la requête de votre client SQL vers un fichier CSV. Assurez-vous que le fichier est encodé en UTF-8 pour éviter les problèmes de caractères.
- Préparer pour le téléchargement : Avant de télécharger vers un outil de Process Mining, confirmez que les en-têtes de colonne correspondent aux noms d'attributs requis, tels que InvoiceNumber, ActivityName et EventTimestamp. Vérifiez que les formats de date et d'heure sont cohérents.
Configuration
- Licence SuiteAnalytics Connect : Une licence valide pour le module SuiteAnalytics Connect est obligatoire pour accéder à la base de données répliquée en lecture de NetSuite. Sans cela, l'accès SQL direct n'est pas possible.
- Rôle et utilisateur dédiés : Il est fortement recommandé de créer un rôle NetSuite dédié avec les autorisations appropriées pour SuiteAnalytics Connect. Ce rôle doit avoir un accès en lecture seule aux enregistrements nécessaires, y compris Transactions, Customers et System Notes. Attribuez un utilisateur dédié à ce rôle pour l'extraction afin d'assurer la sécurité et l'auditabilité.
- Filtrage par plage de dates : La requête fournie inclut une clause
WHEREsur la date de création de la facture (Transaction.TRANDATE). Pour les extractions initiales, il est conseillé de commencer avec une plage de dates plus petite, comme les 3 à 6 derniers mois, afin de gérer la performance et le volume de données. Par exemple :AND T.TRANDATE BETWEEN '2023-01-01' AND '2023-06-30'. - Filtrage par filiale : Pour les comptes avec plusieurs filiales, le filtrage par la filiale spécifique est essentiel pour la performance et la pertinence des données. La requête inclut un espace réservé
WHERE T.SUBSIDIARY_ID = [Your Subsidiary ID]qui doit être configuré. - Actualisation des données : La base de données SuiteAnalytics Connect est une réplique en lecture. Les données sont généralement actualisées plusieurs fois par heure, mais ce n'est pas en temps réel. Soyez conscient d'un décalage potentiel de quelques heures entre une transaction effectuée dans NetSuite et son apparition dans la base de données 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');