Mise Ă  jour contact facture abonnement pas automatique

Hello, actuellement si l’on change le contact de facture sur la fiche d’un client, ce champs ne semble pas se mettre Ă  jour dans un abonnement qui serait liĂ© au mĂȘme client.

Possible de faire en sorte que lorsqu’on change le contact de facturation du client cela se rĂ©percute automatiquement sur le contact de facturation de l’abonnement svp ?

Merci

Bonjour @maximeIndieHosters,

J’ai ouvert un ticket pour traiter ce sujet: [Feat] Automatically update the invoicing contact person in subscription when changed in contacts (#366) · Issues · Dokos / Dokos · GitLab

En attendant qu’on ait la bande passante pour proposer quelque chose de standard, voici un script python qui peut ĂȘtre mis en place immĂ©diatement:

if doc.is_billing_contact:
    for link in doc.links:
        if link.link_doctype == "Customer" and frappe.db.get_value("Subscription", filters={"customer": link.link_name}):
            for subscription in frappe.db.get_all("Subscription", filters={"customer": link.link_name}):
                frappe.db.set_value("Subscription", subscription.name, "contact_person", doc.name)

Bonne fin de journée

Hello Charles,

J’ai testĂ© mais je vois quelques effets de bords.

Effectivement, je suis allĂ© dans un contact rattachĂ© Ă  un client et j’ai cochĂ© la case “contact de facturation” et il s’est bien retrouvĂ© dans le contact de facture de l’abo sauf que le champs email en-dessous n’a pas Ă©tĂ© actualisĂ© :
Capture d’écran 2022-12-14 à 13.07.36

Autre chose : que se passe-t-il si jamais l’on coche “contact de facturation” sur plusieurs contacts ?

Salut Maxime,

VoilĂ  un script modifiĂ© qui devrait mettre Ă©galement Ă  jour l’adresse email.
Dans le prĂ©cĂ©dent script je ne mettais Ă  jour que le lien vers le contact, lĂ  ça enregistre Ă  nouveau l’abonnement, donc ça doit rĂ©cupĂ©rer son adresse email principale:

if doc.is_billing_contact:
    for link in doc.links:
        if link.link_doctype == "Customer" and frappe.db.get_value("Subscription", filters={"customer": link.link_name}):
            for subscription in frappe.db.get_all("Subscription", filters={"customer": link.link_name}):
                subscription = frappe.get_doc("Subscription", subscription.name)
                subscription.contact_person = doc.name
                subscription.save()

Ce script met Ă  jour l’abonnement dĂšs qu’on enregistre un contact, donc si plusieurs personnes sont considĂ©rĂ©es comme des contacts de facturation, c’est le dernier contact enregistrĂ© qui sera ajoutĂ© dans l’abonnement.

Bonne journée

Testé, ça fonctionne. Merci :slight_smile:
Je prĂ©cise que rien n’est prĂ©vu en l’état si on dĂ©coche le fait qu’un contact soit le “contact de facturation”. Iel reste inscrit comme contact dans l’abonnement.

En l’état c’est un cas relativement rare. Mais bon Ă  garder en tĂȘte si jamais.