> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metronome.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Modifier un contrat

La possibilité de modifier un contrat vous aide à réagir rapidement aux besoins de vos clients et de votre entreprise. Lorsque le contrat d'un client doit être mis à jour pour refléter une augmentation en cours de période ou pour corriger une erreur, vous pouvez modifier les conditions d'un contrat via l'interface utilisateur Metronome ou via l'API avec le point de terminaison `editContract`.

Lorsque vous modifiez un contrat, toutes les factures à l'état brouillon sont mises à jour immédiatement pour refléter cette modification. Les factures finalisées restent inchangées. Si vous annulez et régénérez une facture finalisée, la facture régénérée est mise à jour pour refléter les modifications que vous avez apportées.

## Exemples de modification de contrat

Cette section décrit des exemples de scénarios de modification de contrat pour une entreprise nommée BigData.

### Modifier le calendrier d'accès et le calendrier de facturation pour un engagement

Dans cet exemple, le client de BigData a initialement négocié un contrat SLG de 2 ans avec un engagement prépayé de 100 000 \$ applicable la première année. Le contrat a débuté le 1er janvier 2025 et s'étend jusqu'au 1er janvier 2027.

Après seulement 6 mois, ils ont utilisé le produit très rapidement et il ne leur reste que 10 000 $sur leur engagement. Ils prennent contact et négocient de nouvelles conditions. Ils ont doublé le montant de leur engagement à 200 000$, mais disposent désormais de la durée complète du contrat de 2 ans pour consommer 200 000 \$.

Pour mettre en œuvre ce changement dans Metronome, BigData :

* Augmente le montant du segment du calendrier d'accès à 200 000 \$
* Étend la date `ending_before` jusqu'à la fin de la durée du contrat
* Ajoute un autre segment de calendrier de facturation pour facturer au client maintenant les 100 000 \$ d'engagement supplémentaires

Cet exemple d'appel API illustre la modification de contrat décrite :

```bash theme={null}
curl https://api.metronome.com/v2/contracts/edit \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "customer_id": "13117714-3f05-48e5-a6e9-a66093f13b4d",
        "contract_id": "d7abd0cd-4ae9-4db7-8676-e986a4ebd8dc",
        "update_commits": [
            {
                "commit_id": "2e30f074-d04c-412e-a134-851ebfa5ceb2",
                "access_schedule": {
                    "update_schedule_items": [
                        {
                            "id": "d38a8230-3614-46f9-82c6-82e53ac630d6",
                            "amount": 20000000,
                            "ending_before": "2027-01-01T00:00:00.000Z"
                        }
                    ]
                },
                "invoice_schedule": {
                    "add_schedule_items": [
                        {
                            "timestamp": "2025-07-01T00:00:00.000Z",
                            "amount": 10000000
                        }
                    ]
                }
            }
        ]
    }'
```

### Modifier les ID de produits applicables pour un engagement

Dans cet exemple, le contrat d'un client comprend un engagement prépayé spécifique à un produit nommé Commit A. Seul l'usage du produit Data Reads peut consommer leur engagement.

La facture finalisée de février 2025 inclut l'utilisation des produits Data Reads et Data Writes. Seul Data Reads consomme l'engagement prépayé.

| Produit     | Engagement ou crédit appliqué | Prix  | Quantité | Total  |
| :---------- | :---------------------------- | :---- | :------- | :----- |
| Data Reads  | Commit A                      | 10 \$ | 10       | 100 \$ |
| Data Writes |                               | 5 \$  | 10       | 50 \$  |
|             |                               |       | Total    | 50 \$  |

La facture brouillon de mars 2025 inclut également l'utilisation de Data Reads et Data Writes. À nouveau, seul Data Reads consomme l'engagement prépayé.

| Produit     | Engagement ou crédit appliqué | Prix  | Quantité | Total |
| :---------- | :---------------------------- | :---- | :------- | :---- |
| Data Reads  | Commit A                      | 10 \$ | 3        | 30 \$ |
| Data Writes |                               | 5 \$  | 2        | 10 \$ |
|             |                               |       | Total    | 10 \$ |

Le client négocie ensuite une modification en cours de contrat, où Data Writes peut désormais consommer ces engagements, à partir de la période de facturation de mars 2025.

Cet exemple d'appel API du 5 mars 2025 modifie les ID de produits applicables associés à l'engagement pour ajouter Data Reads et Writes.

```bash theme={null}
curl https://api.metronome.com/v2/contracts/edit \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "customer_id": "40f388e0-3fa8-4b4f-b4c8-b5a7a97fdb48",
        "contract_id": "323cdf39-678a-49b8-a6ce-5c4b1e108b9c",
        "update_commits": [
            {
                "commit_id": "d0d1472b-e63a-46d2-b9cb-036cd57db7e6",
                "applicable_product_ids": [
                    "f3a30bcb-e35a-4409-b20b-45b33efc459d",
                    "4ef215cd-0bee-4518-93c9-4caf76cb3db9"
                ]
            }
        ]
    }'
```

La facture brouillon de mars 2025 reflète immédiatement le changement des ID de produits applicables. Pour toute la période de facturation, Commit A peut désormais déduire à la fois Data Reads et Data Writes.

| Produit     | Engagement ou crédit appliqué | Prix  | Quantité | Total |
| :---------- | :---------------------------- | :---- | :------- | :---- |
| Data Reads  | Commit A                      | 10 \$ | 3        | 30 \$ |
| Data Writes | Commit A                      | 5 \$  | 2        | 10 \$ |
|             |                               |       | Total    | 0 \$  |

La facture finalisée de février 2025 reste inchangée.

| Produit     | Engagement ou crédit appliqué | Prix  | Quantité | Total  |
| :---------- | :---------------------------- | :---- | :------- | :----- |
| Data Reads  | Commit A                      | 10 \$ | 10       | 100 \$ |
| Data Writes |                               | 5 \$  | 10       | 50 \$  |
|             |                               |       | Total    | 50 \$  |

Si le client avait annulé et régénéré la facture du mois 1, Commit A s'appliquerait à la fois à Data Reads et Data Writes, en fonction de l'état actuel du contrat.

## Suivre les modifications dans le temps

Consultez l'historique d'un contrat pour suivre toutes les modifications et changements effectués au fil du temps.

Le point de terminaison `getEditHistory` renvoie toutes les modifications jamais apportées à un contrat. Cela inclut toutes les modifications effectuées via :

* Le point de terminaison `editContract`
* Le point de terminaison API `updateEndDate`
* L'ajout de filtres d'utilisation avec le point de terminaison `setUsageFilters`
* L'interface utilisateur Metronome

Voici un exemple de réponse de getEditHistory. Cette réponse indique que le contrat a été modifié deux fois : une fois pour ajouter un override et une fois pour ajouter un engagement.

```json theme={null}
{
    "data": [
        {
            "add_overrides": [
                {
                    "applicable_product_tags": [],
                    "id": "80c8e124-a4fb-4264-b2e6-ac2479d075dc",
                    "is_commit_specific": false,
                    "multiplier": 0.5,
                    "override_specifiers": [
                        {
                            "product_id": "90c47b63-8095-4369-9779-c65cc4fe3af7"
                        }
                    ],
                    "product": {
                        "id": "90c47b63-8095-4369-9779-c65cc4fe3af7",
                        "name": "Reads"
                    },
                    "starting_at": "2025-02-01T00:00:00+00:00",
                    "type": "MULTIPLIER"
                }
            ],
            "id": "a19c750a-ffe4-57ae-9645-cb8682904afb",
            "timestamp": "2025-02-26T23:07:00.727000+00:00"
        },
        {
            "add_commits": [
                {
                    "access_schedule": {
                        "credit_type": {
                            "id": "2714e483-4ff1-48e4-9e25-ac732e8f24f2",
                            "name": "USD (cents)"
                        },
                        "schedule_items": [
                            {
                                "amount": 10000,
                                "ending_before": "2025-03-01T00:00:00+00:00",
                                "id": "11980e47-96b5-4527-bb38-149edc205c34",
                                "starting_at": "2025-02-01T00:00:00+00:00"
                            }
                        ]
                    },
                    "id": "e647c959-9eeb-49d2-ac21-2f2141e3e1fd",
                    "invoice_schedule": {
                        "credit_type": {
                            "id": "2714e483-4ff1-48e4-9e25-ac732e8f24f2",
                            "name": "USD (cents)"
                        },
                        "schedule_items": [
                            {
                                "amount": 10000,
                                "id": "c5cb2f25-fa4e-4ff6-9cdd-ff5edfe73acc",
                                "invoice_id": "0ce97fbd-d19f-52c8-80d6-4b877ad31177",
                                "quantity": 1,
                                "timestamp": "2025-02-01T00:00:00+00:00",
                                "unit_price": 10000
                            }
                        ]
                    },
                    "priority": 100,
                    "product": {
                        "id": "35a467c7-fc24-46c2-884b-66af8d349674",
                        "name": "Support"
                    },
                    "rate_type": "LIST_RATE",
                    "type": "PREPAID"
                }
            ],
            "id": "0551864c-edc7-5045-bcec-3688b4d53c3f",
            "timestamp": "2025-02-26T23:07:16.031000+00:00"
        }
    ]
}
```

Pour visualiser l'état complet d'un contrat à un moment donné dans l'historique, utilisez le paramètre `as_of_date` sur le point de terminaison `getContract`.

Cet exemple de réponse montre l'état complet du contrat après la première modification mais avant la seconde modification. Il prend le temps `created_at` de la première modification et le transmet au paramètre `as_of_date` dans `getContract`.

```json theme={null}
{
    "data": {
        "commits": [],
        "created_at": "2025-02-26T23:06:32.574000+00:00",
        "created_by": "User",
        "credits": [],
        "custom_fields": {},
        "customer_id": "d0d1472b-e63a-46d2-b9cb-036cd57db7e6",
        "id": "c5e8d83b-23e7-4747-a5fe-8a33f4404fe1",
        "multiplier_override_prioritization": "LOWEST_MULTIPLIER",
        "name": "test rate card",
        "overrides": [
            {
                "applicable_product_tags": [],
                "id": "80c8e124-a4fb-4264-b2e6-ac2479d075dc",
                "is_commit_specific": false,
                "multiplier": 0.5,
                "override_specifiers": [
                    {
                        "product_id": "90c47b63-8095-4369-9779-c65cc4fe3af7"
                    }
                ],
                "product": {
                    "id": "90c47b63-8095-4369-9779-c65cc4fe3af7",
                    "name": "Reads"
                },
                "starting_at": "2025-02-01T00:00:00+00:00",
                "type": "MULTIPLIER"
            }
        ],
        "rate_card_id": "c38bc471-0c45-41d1-b802-0bae4554e771",
        "recurring_commits": [],
        "recurring_credits": [],
        "scheduled_charges": [],
        "starting_at": "2025-02-01T00:00:00+00:00",
        "transitions": [],
        "usage_filter": [],
        "usage_statement_schedule": {
            "billing_anchor_date": "2025-02-01T00:00:00+00:00",
            "frequency": "MONTHLY"
        }
    }
}
```

<Tip>
  **ASTUCE**

  Toutes les modifications apportées à un contrat sont également enregistrées dans les journaux d'audit de Metronome, accessibles dans l'interface utilisateur Metronome et via l'API.
</Tip>

## Modifications prises en charge

Actuellement, les modifications suivantes sont prises en charge :

* Ajouter de nouveaux engagements
* Modifier les calendriers d'accès et de facturation des engagements
* Modifier le nom et la description de l'engagement
* Modifier les ID de produits applicables et les tags de produits applicables sur les engagements
* Modifier la fraction de report sur les engagements
* Archiver les engagements
* Ajouter de nouveaux engagements récurrents
* Modifier ending\_before, le montant de la facture et le montant d'accès sur les engagements récurrents
* Ajouter de nouveaux crédits
* Modifier les calendriers d'accès des crédits
* Modifier le nom et la description du crédit
* Modifier les ID de produits applicables et les tags de produits applicables sur les crédits
* Ajouter de nouveaux crédits récurrents
* Archiver les crédits
* Modifier ending\_before et le montant d'accès sur les crédits récurrents
* Ajouter de nouveaux overrides
* Supprimer des overrides
* Ajouter de nouveaux frais planifiés
* Modifier les calendriers de facturation des frais planifiés
* Archiver les frais planifiés
* Ajouter une configuration de seuil de dépense
* Mettre à jour la configuration de seuil de dépense
* Mettre à jour la date de fin du contrat
* Mettre à jour le nom du contrat

## Limitations

La fonctionnalité de modification de contrat comporte ces garde-fous.

**Calendriers de facturation des engagements et frais planifiés**

* Si l'élément du calendrier de facturation est associé à une *facture finalisée*, vous ne pouvez ni supprimer ni mettre à jour cet élément.
* Si l'élément du calendrier de facturation est associé à une *facture annulée*, vous ne pouvez pas supprimer cet élément.

**Calendriers d'accès des engagements et crédits**

* Vous ne pouvez pas supprimer un segment du calendrier d'accès qui a été appliqué à une facture finalisée. Vous pouvez annuler la facture au préalable *puis* supprimer le segment du calendrier d'accès.
* Si vous supprimez un segment du calendrier d'accès, son entrée manuelle dans le grand livre est également supprimée.
* Si vous modifiez le calendrier d'accès d'un engagement ou d'un crédit, toutes les factures à l'état brouillon reflètent immédiatement le changement de calendrier d'accès. Les factures finalisées restent inchangées. Si vous annulez et régénérez les factures finalisées, les factures régénérées reflètent le nouveau calendrier d'accès du crédit ou de l'engagement.

**Engagements reportés (rollover)**

* Vous ne pouvez pas modifier les engagements reportés.
* Vous pouvez modifier le calendrier d'accès de l'engagement d'origine jusqu'à ce que le contrat vers lequel il a été transféré comporte une facture finalisée.
* Vous pouvez modifier le calendrier de facturation de l'engagement d'origine jusqu'à ce que le contrat d'origine soit terminé.

**Factures planifiées finalisées**

Considérez un scénario où vous ajoutez un nouvel élément de calendrier de facturation au timestamp X, ou modifiez le timestamp d'un élément de calendrier de facturation à la date X. Dans le cas où il existe déjà une facture planifiée finalisée pour ce timestamp, cette facture planifiée finalisée reste inchangée. Metronome crée une nouvelle facture planifiée finalisée pour les éléments de calendrier de facturation modifiés.

**Archivage des conditions**

* Avant d'archiver un engagement, toutes les factures d'utilisation finalisées auxquelles l'engagement a été appliqué doivent être annulées. Toutes les factures finalisées pour le paiement de l'engagement doivent également être annulées.
* Avant d'archiver un crédit, toutes les factures d'utilisation finalisées auxquelles le crédit a été appliqué doivent être annulées.
* Avant d'archiver des frais planifiés, toutes les factures finalisées créées par les frais planifiés doivent être annulées.
