{
  "tool": "devis-facture",
  "name": "Devis & Facture",
  "apiVersion": "1",
  "description": "Génère un document commercial (devis, bon de commande ou facture) au format PDF à partir des champs du formulaire : société émettrice, client, lignes (désignation, quantité, prix unitaire HT, taux de TVA), remise, conditions et mentions. Calcul HT/TVA/TTC automatique. Tout se fait localement dans le navigateur.",
  "url": "https://sui-juris.fr/p2p-tools/devis-facture/",
  "ops": {
    "generate": {
      "summary": "Construit le PDF du document et renvoie ses octets.",
      "args": {
        "type": { "type": "string", "required": false, "description": "Type de document : 'devis', 'commande' ou 'facture' (défaut 'facture')." },
        "numero": { "type": "string", "required": false, "description": "Numéro du document (ex. FAC-2026-0001). Sert aussi de nom de fichier." },
        "date": { "type": "string", "required": false, "description": "Date du document AAAA-MM-JJ (défaut : aujourd'hui)." },
        "dateEch": { "type": "string", "required": false, "description": "Date d'échéance AAAA-MM-JJ (facultatif)." },
        "client": { "type": "object", "required": false, "description": "Client destinataire : { nom, adresse, siret, email }." },
        "lignes": { "type": "array", "required": true, "description": "Lignes du document : [{ designation, qty, pu, tva }] où pu = prix unitaire HT et tva = taux en %." },
        "remisePct": { "type": "number", "required": false, "description": "Remise globale en pourcentage appliquée au HT (défaut 0)." },
        "conditions": { "type": "string", "required": false, "description": "Conditions de paiement / de vente (défaut : celles de la société)." },
        "mentions": { "type": "string", "required": false, "description": "Mentions légales additionnelles (défaut : celles de la société)." },
        "societe": { "type": "object", "required": false, "description": "Émetteur : { nom, adresse, siret, iban, devise, logo(dataURL), logoMode('logo'|'banner'), logoSize, logoPos('left'|'center'|'right'), pied, conditions, mentions }." }
      },
      "returns": {
        "bytes": "base64 du PDF généré",
        "mime": "application/pdf",
        "filename": "<numero>.pdf",
        "totals": "objet { ht, tvaByRate, tva, ttc } (montants calculés)"
      }
    }
  }
}
