Facture automatique après validation de doctype

Bonjour ;
J’ai créé un doctype (dossier) contient le nom de client et 1 article et le numéro de série de l’article.
Je veux créer une facture automatique après la validation de dossier.
J’ai besoin d’aide.
Merci.

Bonjour @nassim_sebbagh,

Pour automatiser la création d’une facture, tu peux utiliser les “Scripts Python”.
Ton type de document de référence sera ton doctype “Dossier”
Tu choisis l’événement déclencheur que tu veux, ça peut être “Après la validation” si le dossier est un type de document soumissible.

Ensuite, il faut créer une facture de vente via l’API, en prenant en compte les données de ton dossier.
Exemple (à compléter avec toutes les données nécessaires et les noms de champs provenant de “Dossier”):

frappe.get_doc({
    "doctype": "Sales Invoice",
    "customer": doc.client,
    "items": [{
        "item_code": doc.article,
        "qty": 1,
        "serial_no": doc.numero_de_serie
    }]
}).insert()

Bonne journée

Merci beaucoup Charles -henri

bonjour charles-henri ;
j’ai une erreur après validation de script :
AttributeError: ‘NoneType’ object has no attribute ‘options’

merci

Peux-tu copier-coller ton script ici s’il te plaît ?

frappe.get_doc({
    "doctype": "Sales Invoice",
    "customer":doc.customer,
    "Items":[{
             "item_code":doc.item_code,
             "qty":1,
             "serial_no":doc.n_serie
    }]
            
}).insert()

merci charles-henri;
c’est bon j’ai trouver la solution Items i majuscule.

1 Like

bonjour ;
j’ai un autre problème , le system m’affiche le message suivant:
Ligne 1 : Le Facteur de Conversion est obligatoire.
quand je modifie le code :

frappe.get_doc({
    "doctype": "Sales Invoice",
    "customer":doc.customer,
    "company":"SARL RESOVIZ",
    "items":[{
             "item_code":doc.n_serie.item_code,
             "qty":1,
             "uom":'unité',
             "conversion_factor":1,
             "serial_no":doc.n_serie
             
    }]
            
}).insert()

erreur TypeError: quote_from_bytes() expected bytes
after save.

doc.n_serie.item_code devrait probablement être doc.item_code ?

Sur dossier j’ai ajouter le champ item_code de type lien → Item
et voila le code :

frappe.get_doc({
    "doctype": "Sales Invoice",
    "customer":doc.customer,
    "company":"SARL RESOVIZ",
    "items":[{
             "item_code":doc.item_code,
             "qty":1,
             "serial_no":doc.n_serie
             
    }]
            
}).insert()

erreur
TypeError: quote_from_bytes() expected bytes

Je viens de tester localement avec les données suivantes et ça fonctionne bien:

doc = frappe.get_doc({
  "doctype": "Sales Invoice",
  "customer": "Isaac Bériault",
  "company":"Mappemonde",
  "items":[{
    "item_code": "Moto",
    "qty":1,
    "serial_no": "MOTO000001"
  }]
}).insert()

Le problème vient très probablement des données de la fiche Dossier.
Peux-tu reproduire ton cas sur la démo pour que je puisse comprendre ce qui pose problème ?

bonjour ;
j’ai créer dossier mais toujours un message d’erreur.
https://demo.dokos.cloud/app/dossier
message :
Exchange Rate est obligatoire. Peut-être qu’un enregistrement de Taux de change n’est pas créé pour EUR et None.

merci;

Bonjour Nassim,

Sur le site de démo, la société ne s’appelle pas “Mappemonde”, mais “Dokompany”.
J’ai modifié le script en remplaçant: "company":"Mappemonde", par "company":"Dokompany", et ça fonctionne correctement.

Bonne journée !

Merci Charles -henri

1 Like