factpulse 1.0.0 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -3
- data/Gemfile.lock +1 -1
- data/README.md +73 -119
- data/docs/AFNORPDPPADirectoryServiceApi.md +31 -1148
- data/docs/BodyAjouterFichierApiV1ChorusProTransversesAjouterFichierPost.md +22 -0
- data/docs/BodyCompleterFactureApiV1ChorusProFacturesCompleterPost.md +22 -0
- data/docs/BodyListerServicesStructureApiV1ChorusProStructuresIdStructureCppServicesGet.md +20 -0
- data/docs/BodyRechercherFacturesDestinataireApiV1ChorusProFacturesRechercherDestinatairePost.md +22 -0
- data/docs/BodyRechercherFacturesFournisseurApiV1ChorusProFacturesRechercherFournisseurPost.md +22 -0
- data/docs/BodyRecyclerFactureApiV1ChorusProFacturesRecyclerPost.md +22 -0
- data/docs/BodyTelechargerGroupeFacturesApiV1ChorusProFacturesTelechargerGroupePost.md +22 -0
- data/docs/BodyTraiterFactureRecueApiV1ChorusProFacturesTraiterFactureRecuePost.md +22 -0
- data/docs/BodyValideurConsulterFactureApiV1ChorusProFacturesValideurConsulterPost.md +22 -0
- data/docs/BodyValideurRechercherFacturesApiV1ChorusProFacturesValideurRechercherPost.md +22 -0
- data/docs/BodyValideurTraiterFactureApiV1ChorusProFacturesValideurTraiterPost.md +22 -0
- data/docs/ChorusProApi.md +70 -66
- data/docs/Destinataire.md +0 -4
- data/docs/{MontantAPayer.md → DirectionFlux.md} +2 -2
- data/docs/FactureEnrichieInfoInput.md +32 -0
- data/docs/{FactureEnrichieInfo.md → FactureEnrichieInfoOutput.md} +2 -2
- data/docs/FactureFacturX.md +0 -2
- data/docs/FluxResume.md +32 -0
- data/docs/Fournisseur.md +0 -2
- data/docs/LigneDePoste.md +2 -2
- data/docs/LigneDePosteMontantTotalLigneHt.md +15 -0
- data/docs/LigneDeTVA.md +2 -2
- data/docs/MontantTotal.md +5 -5
- data/docs/MontantTotalMontantRemiseGlobaleTtc.md +15 -0
- data/docs/{MontantBaseHt.md → Montantapayer.md} +2 -2
- data/docs/Montantbaseht.md +15 -0
- data/docs/Montanthttotal.md +15 -0
- data/docs/Montantttctotal.md +15 -0
- data/docs/{ErrorLevel.md → Montanttva.md} +2 -2
- data/docs/{ErrorSource.md → Montanttva1.md} +2 -2
- data/docs/Montantunitaireht.md +15 -0
- data/docs/OptionsProcessing.md +1 -1
- data/docs/PDPCredentials.md +24 -0
- data/docs/ProcessingEndpointsUnifisApi.md +147 -0
- data/docs/{StatutCelery.md → ProfilFlux.md} +2 -2
- data/docs/QuotaInfo.md +26 -0
- data/docs/ReponseHealthcheckAFNOR.md +22 -0
- data/docs/ReponseRechercheFlux.md +24 -0
- data/docs/ReponseSoumissionFlux.md +30 -0
- data/docs/RequeteRechercheFlux.md +34 -0
- data/docs/RequeteSoumissionFlux.md +28 -0
- data/docs/SantApi.md +0 -62
- data/docs/SignatureLectroniqueApi.md +315 -0
- data/docs/SoumettreFactureCompleteResponse.md +1 -1
- data/docs/SoumettreFactureRequest.md +3 -3
- data/docs/StatutAcquittement.md +15 -0
- data/docs/StatutTache.md +2 -2
- data/docs/SyntaxeFlux.md +15 -0
- data/docs/TraitementFactureApi.md +2 -2
- data/docs/TypeFlux.md +15 -0
- data/docs/Utilisateur.md +40 -0
- data/factpulse.gemspec +2 -2
- data/lib/factpulse/api/afnorpdppa_api.rb +1 -1
- data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +30 -1014
- data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +1 -1
- data/lib/factpulse/api/chorus_pro_api.rb +108 -95
- data/lib/factpulse/api/processing_endpoints_unifis_api.rb +158 -0
- data/lib/factpulse/api/sant_api.rb +1 -58
- data/lib/factpulse/api/signature_lectronique_api.rb +333 -0
- data/lib/factpulse/api/traitement_facture_api.rb +5 -5
- data/lib/factpulse/api/utilisateur_api.rb +1 -1
- data/lib/factpulse/api_client.rb +3 -7
- data/lib/factpulse/api_error.rb +1 -1
- data/lib/factpulse/api_model_base.rb +1 -1
- data/lib/factpulse/configuration.rb +1 -1
- data/lib/factpulse/models/adresse_electronique.rb +1 -1
- data/lib/factpulse/models/adresse_postale.rb +1 -1
- data/lib/factpulse/models/body_ajouter_fichier_api_v1_chorus_pro_transverses_ajouter_fichier_post.rb +202 -0
- data/lib/factpulse/models/body_completer_facture_api_v1_chorus_pro_factures_completer_post.rb +202 -0
- data/lib/factpulse/models/body_lister_services_structure_api_v1_chorus_pro_structures_id_structure_cpp_services_get.rb +174 -0
- data/lib/factpulse/models/body_rechercher_factures_destinataire_api_v1_chorus_pro_factures_rechercher_destinataire_post.rb +202 -0
- data/lib/factpulse/models/body_rechercher_factures_fournisseur_api_v1_chorus_pro_factures_rechercher_fournisseur_post.rb +202 -0
- data/lib/factpulse/models/body_recycler_facture_api_v1_chorus_pro_factures_recycler_post.rb +202 -0
- data/lib/factpulse/models/{api_error.rb → body_telecharger_groupe_factures_api_v1_chorus_pro_factures_telecharger_groupe_post.rb} +44 -47
- data/lib/factpulse/models/{note.rb → body_traiter_facture_recue_api_v1_chorus_pro_factures_traiter_facture_recue_post.rb} +55 -28
- data/lib/factpulse/models/body_valideur_consulter_facture_api_v1_chorus_pro_factures_valideur_consulter_post.rb +202 -0
- data/lib/factpulse/models/body_valideur_rechercher_factures_api_v1_chorus_pro_factures_valideur_rechercher_post.rb +202 -0
- data/lib/factpulse/models/body_valideur_traiter_facture_api_v1_chorus_pro_factures_valideur_traiter_post.rb +202 -0
- data/lib/factpulse/models/cadre_de_facturation.rb +1 -1
- data/lib/factpulse/models/categorie_tva.rb +11 -11
- data/lib/factpulse/models/certificate_info_response.rb +1 -1
- data/lib/factpulse/models/chorus_pro_credentials.rb +1 -1
- data/lib/factpulse/models/code_cadre_facturation.rb +1 -1
- data/lib/factpulse/models/code_raison_reduction.rb +9 -9
- data/lib/factpulse/models/consulter_facture_request.rb +1 -1
- data/lib/factpulse/models/consulter_facture_response.rb +1 -1
- data/lib/factpulse/models/consulter_structure_request.rb +1 -1
- data/lib/factpulse/models/consulter_structure_response.rb +1 -1
- data/lib/factpulse/models/credentials_afnor.rb +1 -1
- data/lib/factpulse/models/credentials_chorus_pro.rb +1 -1
- data/lib/factpulse/models/destinataire.rb +2 -22
- data/lib/factpulse/models/destination.rb +1 -1
- data/lib/factpulse/models/destination_afnor.rb +1 -1
- data/lib/factpulse/models/destination_chorus_pro.rb +1 -1
- data/lib/factpulse/models/{statut_celery.rb → direction_flux.rb} +7 -10
- data/lib/factpulse/models/donnees_facture_simplifiees.rb +1 -1
- data/lib/factpulse/models/facture_enrichie_info_input.rb +315 -0
- data/lib/factpulse/models/{facture_enrichie_info.rb → facture_enrichie_info_output.rb} +4 -4
- data/lib/factpulse/models/facture_factur_x.rb +2 -13
- data/lib/factpulse/models/flux_resume.rb +251 -0
- data/lib/factpulse/models/format_sortie.rb +1 -1
- data/lib/factpulse/models/fournisseur.rb +2 -12
- data/lib/factpulse/models/generate_certificate_request.rb +1 -1
- data/lib/factpulse/models/generate_certificate_response.rb +1 -1
- data/lib/factpulse/models/http_validation_error.rb +1 -1
- data/lib/factpulse/models/information_signature_api.rb +1 -1
- data/lib/factpulse/models/ligne_de_poste.rb +4 -3
- data/lib/factpulse/models/ligne_de_poste_montant_remise_ht.rb +2 -2
- data/lib/factpulse/models/{montant_total_ligne_ht.rb → ligne_de_poste_montant_total_ligne_ht.rb} +3 -3
- data/lib/factpulse/models/ligne_de_poste_taux_tva_manuel.rb +2 -2
- data/lib/factpulse/models/ligne_de_tva.rb +3 -3
- data/lib/factpulse/models/mode_depot.rb +1 -1
- data/lib/factpulse/models/mode_paiement.rb +1 -1
- data/lib/factpulse/models/montant_ht_total.rb +1 -2
- data/lib/factpulse/models/montant_total.rb +7 -6
- data/lib/factpulse/models/montant_total_acompte.rb +2 -2
- data/lib/factpulse/models/{montant_a_payer.rb → montant_total_montant_remise_globale_ttc.rb} +3 -3
- data/lib/factpulse/models/montant_ttc_total.rb +1 -2
- data/lib/factpulse/models/montant_tva.rb +1 -2
- data/lib/factpulse/models/{montant_tva_total.rb → montantapayer.rb} +3 -3
- data/lib/factpulse/models/{montant_tva_ligne.rb → montantbaseht.rb} +3 -3
- data/lib/factpulse/models/montanthttotal.rb +104 -0
- data/lib/factpulse/models/montantttctotal.rb +104 -0
- data/lib/factpulse/models/montanttva.rb +104 -0
- data/lib/factpulse/models/montanttva1.rb +104 -0
- data/lib/factpulse/models/{montant_unitaire_ht.rb → montantunitaireht.rb} +2 -2
- data/lib/factpulse/models/obtenir_id_chorus_pro_request.rb +1 -1
- data/lib/factpulse/models/obtenir_id_chorus_pro_response.rb +1 -1
- data/lib/factpulse/models/options_processing.rb +16 -2
- data/lib/factpulse/models/parametres_signature.rb +1 -1
- data/lib/factpulse/models/parametres_structure.rb +1 -1
- data/lib/factpulse/models/pdf_factur_x_info.rb +1 -1
- data/lib/factpulse/models/pdp_credentials.rb +247 -0
- data/lib/factpulse/models/piece_jointe_complementaire.rb +1 -1
- data/lib/factpulse/models/profil_api.rb +1 -1
- data/lib/factpulse/models/profil_flux.rb +41 -0
- data/lib/factpulse/models/quantite.rb +1 -1
- data/lib/factpulse/models/quota_info.rb +269 -0
- data/lib/factpulse/models/rechercher_services_response.rb +1 -1
- data/lib/factpulse/models/rechercher_structure_request.rb +1 -1
- data/lib/factpulse/models/rechercher_structure_response.rb +1 -1
- data/lib/factpulse/models/references.rb +1 -1
- data/lib/factpulse/models/reponse_healthcheck_afnor.rb +220 -0
- data/lib/factpulse/models/reponse_recherche_flux.rb +249 -0
- data/lib/factpulse/models/reponse_soumission_flux.rb +294 -0
- data/lib/factpulse/models/reponse_tache.rb +1 -1
- data/lib/factpulse/models/reponse_validation_erreur.rb +1 -1
- data/lib/factpulse/models/reponse_validation_succes.rb +1 -1
- data/lib/factpulse/models/requete_recherche_flux.rb +306 -0
- data/lib/factpulse/models/{validation_error_detail.rb → requete_soumission_flux.rb} +61 -68
- data/lib/factpulse/models/resultat_afnor.rb +1 -1
- data/lib/factpulse/models/resultat_chorus_pro.rb +1 -1
- data/lib/factpulse/models/resultat_validation_pdfapi.rb +1 -1
- data/lib/factpulse/models/scheme_id.rb +7 -7
- data/lib/factpulse/models/service_structure.rb +1 -1
- data/lib/factpulse/models/signature_info.rb +1 -1
- data/lib/factpulse/models/soumettre_facture_complete_request.rb +1 -1
- data/lib/factpulse/models/soumettre_facture_complete_response.rb +2 -2
- data/lib/factpulse/models/soumettre_facture_request.rb +7 -4
- data/lib/factpulse/models/soumettre_facture_response.rb +1 -1
- data/lib/factpulse/models/{error_level.rb → statut_acquittement.rb} +7 -6
- data/lib/factpulse/models/statut_facture.rb +1 -1
- data/lib/factpulse/models/statut_tache.rb +5 -30
- data/lib/factpulse/models/structure_info.rb +1 -1
- data/lib/factpulse/models/{error_source.rb → syntaxe_flux.rb} +10 -13
- data/lib/factpulse/models/tauxmanuel.rb +2 -2
- data/lib/factpulse/models/type_facture.rb +1 -1
- data/lib/factpulse/models/type_flux.rb +43 -0
- data/lib/factpulse/models/type_tva.rb +1 -1
- data/lib/factpulse/models/unite.rb +1 -1
- data/lib/factpulse/models/utilisateur.rb +328 -0
- data/lib/factpulse/models/validation_error.rb +1 -1
- data/lib/factpulse/models/validation_error_loc_inner.rb +1 -1
- data/lib/factpulse/version.rb +2 -2
- data/lib/factpulse.rb +39 -15
- metadata +79 -42
- data/docs/APIError.md +0 -22
- data/docs/MontantRemiseGlobaleTtc.md +0 -15
- data/docs/MontantTotalLigneHt.md +0 -15
- data/docs/MontantTvaLigne.md +0 -15
- data/docs/MontantTvaTotal.md +0 -15
- data/docs/MontantUnitaireHt.md +0 -15
- data/docs/Note.md +0 -20
- data/docs/ValidationErrorDetail.md +0 -26
- data/lib/factpulse/helpers/client.rb +0 -300
- data/lib/factpulse/helpers/exceptions.rb +0 -21
- data/lib/factpulse/helpers.rb +0 -13
- data/lib/factpulse/models/montant_base_ht.rb +0 -104
- data/lib/factpulse/models/montant_remise_globale_ttc.rb +0 -104
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3ce0f1f2fe92c3fa54367c5becea06a2cc0f8a2235e14fdea09a8eb59fe3a336
|
|
4
|
+
data.tar.gz: 61180b0780bd01888e992885050450d294a5bedbf6ed7487ac18bcc59598a2ce
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2b2513e2925b6a89191bdc6918c1ab3cd453eb9a672646f244a0688f425e9053efbd2b28187f8593c8a3586b31ab5ee4764112684b031955cfc7d10aee426036
|
|
7
|
+
data.tar.gz: 6c08603a0b953b86c18e2d9402bb4f93fa3fcafdc8e696c24fc94e8a4cd69dbc789f342f814770380320413682a5b25b62ee62c27365099c1b148e1a35cd2436
|
data/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,7 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
## [1.0.
|
|
10
|
+
## [1.0.8] - 2025-11-13
|
|
11
11
|
|
|
12
12
|
### Added
|
|
13
13
|
- Version initiale du SDK ruby
|
|
@@ -24,5 +24,5 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|
|
24
24
|
- Guide d'authentification JWT
|
|
25
25
|
- Configuration avancée (timeout, proxy, debug)
|
|
26
26
|
|
|
27
|
-
[Unreleased]: https://github.com/factpulse/sdk-ruby/compare/v1.0.
|
|
28
|
-
[1.0.
|
|
27
|
+
[Unreleased]: https://github.com/factpulse/sdk-ruby/compare/v1.0.8...HEAD
|
|
28
|
+
[1.0.8]: https://github.com/factpulse/sdk-ruby/releases/tag/v1.0.8
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Client Ruby officiel pour l'API FactPulse - Facturation électronique française
|
|
|
8
8
|
- **Chorus Pro** : Intégration avec la plateforme de facturation publique française
|
|
9
9
|
- **AFNOR PDP/PA** : Soumission de flux conformes à la norme XP Z12-013
|
|
10
10
|
- **Signature électronique** : Signature PDF (PAdES-B-B, PAdES-B-T, PAdES-B-LT)
|
|
11
|
-
- **
|
|
11
|
+
- **Traitement asynchrone** : Support Celery pour opérations longues
|
|
12
12
|
- **Ruby 2.7+** : Compatible avec les versions modernes de Ruby
|
|
13
13
|
|
|
14
14
|
## 🚀 Installation
|
|
@@ -25,175 +25,129 @@ gem 'factpulse'
|
|
|
25
25
|
|
|
26
26
|
## 📖 Démarrage rapide
|
|
27
27
|
|
|
28
|
-
###
|
|
29
|
-
|
|
30
|
-
Le module `helpers` offre une API simplifiée avec authentification et polling automatiques :
|
|
28
|
+
### 1. Authentification
|
|
31
29
|
|
|
32
30
|
```ruby
|
|
33
31
|
require 'factpulse'
|
|
34
|
-
require 'factpulse/helpers'
|
|
35
32
|
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
# Configuration du client
|
|
34
|
+
FactPulse.configure do |config|
|
|
35
|
+
config.host = 'https://factpulse.fr/api/facturation'
|
|
36
|
+
config.access_token = 'votre_token_jwt'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
api_instance = FactPulse::TraitementFactureApi.new
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 2. Générer une facture Factur-X
|
|
43
|
+
|
|
44
|
+
```ruby
|
|
45
|
+
require 'json'
|
|
41
46
|
|
|
42
47
|
# Données de la facture
|
|
43
48
|
facture_data = {
|
|
44
|
-
numero_facture:
|
|
45
|
-
date_facture:
|
|
49
|
+
numero_facture: "FAC-2025-001",
|
|
50
|
+
date_facture: "2025-01-15",
|
|
51
|
+
montant_total_ht: "1000.00",
|
|
52
|
+
montant_total_ttc: "1200.00",
|
|
46
53
|
fournisseur: {
|
|
47
|
-
nom:
|
|
48
|
-
siret:
|
|
54
|
+
nom: "Mon Entreprise SAS",
|
|
55
|
+
siret: "12345678901234",
|
|
49
56
|
adresse_postale: {
|
|
50
|
-
ligne_un:
|
|
51
|
-
code_postal:
|
|
52
|
-
nom_ville:
|
|
53
|
-
pays_code_iso:
|
|
57
|
+
ligne_un: "123 Rue Example",
|
|
58
|
+
code_postal: "75001",
|
|
59
|
+
nom_ville: "Paris",
|
|
60
|
+
pays_code_iso: "FR"
|
|
54
61
|
}
|
|
55
62
|
},
|
|
56
63
|
destinataire: {
|
|
57
|
-
nom:
|
|
58
|
-
siret:
|
|
64
|
+
nom: "Client SARL",
|
|
65
|
+
siret: "98765432109876",
|
|
59
66
|
adresse_postale: {
|
|
60
|
-
ligne_un:
|
|
61
|
-
code_postal:
|
|
62
|
-
nom_ville:
|
|
63
|
-
pays_code_iso:
|
|
67
|
+
ligne_un: "456 Avenue Test",
|
|
68
|
+
code_postal: "69001",
|
|
69
|
+
nom_ville: "Lyon",
|
|
70
|
+
pays_code_iso: "FR"
|
|
64
71
|
}
|
|
65
72
|
},
|
|
66
|
-
montant_total: {
|
|
67
|
-
montant_ht_total: '1000.00',
|
|
68
|
-
montant_tva: '200.00',
|
|
69
|
-
montant_ttc_total: '1200.00',
|
|
70
|
-
montant_a_payer: '1200.00'
|
|
71
|
-
},
|
|
72
73
|
lignes_de_poste: [{
|
|
73
74
|
numero: 1,
|
|
74
|
-
denomination:
|
|
75
|
-
quantite:
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
denomination: "Prestation de conseil",
|
|
76
|
+
quantite: "10.00",
|
|
77
|
+
montant_unitaire_ht: "100.00",
|
|
78
|
+
montant_ligne_ht: "1000.00"
|
|
78
79
|
}]
|
|
79
80
|
}
|
|
80
81
|
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
facture_data,
|
|
87
|
-
pdf_source,
|
|
88
|
-
profil: 'EN16931',
|
|
89
|
-
format_sortie: 'pdf',
|
|
90
|
-
sync: true # Attend le résultat automatiquement
|
|
82
|
+
# Générer le PDF Factur-X
|
|
83
|
+
pdf_bytes = api_instance.generer_facture_api_v1_traitement_generer_facture_post(
|
|
84
|
+
facture_data.to_json,
|
|
85
|
+
'EN16931',
|
|
86
|
+
'pdf'
|
|
91
87
|
)
|
|
92
88
|
|
|
93
89
|
# Sauvegarder
|
|
94
|
-
File.
|
|
90
|
+
File.open('facture.pdf', 'wb') { |f| f.write(pdf_bytes) }
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 3. Soumettre une facture complète (Chorus Pro / AFNOR PDP)
|
|
94
|
+
|
|
95
|
+
```ruby
|
|
96
|
+
response = api_instance.soumettre_facture_complete_api_v1_traitement_factures_soumettre_complete_post({
|
|
97
|
+
facture: facture_data,
|
|
98
|
+
destination: {
|
|
99
|
+
type: "chorus_pro",
|
|
100
|
+
credentials: {
|
|
101
|
+
login: "votre_login_chorus",
|
|
102
|
+
password: "votre_password_chorus"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
puts "Facture soumise : #{response.id_facture_chorus}"
|
|
95
108
|
```
|
|
96
109
|
|
|
97
|
-
|
|
110
|
+
## 🔑 Obtention du token JWT
|
|
98
111
|
|
|
99
|
-
|
|
112
|
+
### Via l'API
|
|
100
113
|
|
|
101
114
|
```ruby
|
|
102
|
-
require 'factpulse'
|
|
103
115
|
require 'net/http'
|
|
104
116
|
require 'json'
|
|
117
|
+
require 'uri'
|
|
105
118
|
|
|
106
|
-
# 1. Obtenir le token JWT
|
|
107
119
|
uri = URI('https://factpulse.fr/api/token/')
|
|
108
120
|
http = Net::HTTP.new(uri.host, uri.port)
|
|
109
121
|
http.use_ssl = true
|
|
110
122
|
|
|
111
|
-
request = Net::HTTP::Post.new(uri.path, {
|
|
123
|
+
request = Net::HTTP::Post.new(uri.path, {'Content-Type' => 'application/json'})
|
|
112
124
|
request.body = {
|
|
113
125
|
username: 'votre_email@example.com',
|
|
114
126
|
password: 'votre_mot_de_passe'
|
|
115
127
|
}.to_json
|
|
116
128
|
|
|
117
129
|
response = http.request(request)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
# 2. Configurer le client
|
|
121
|
-
Factpulse.configure do |config|
|
|
122
|
-
config.host = 'https://factpulse.fr/api/facturation'
|
|
123
|
-
config.access_token = token
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
# 3. Appeler l'API
|
|
127
|
-
api = Factpulse::TraitementFactureApi.new
|
|
128
|
-
response = api.generer_facture_api_v1_traitement_generer_facture_post(
|
|
129
|
-
facture_data.to_json,
|
|
130
|
-
'EN16931',
|
|
131
|
-
'pdf',
|
|
132
|
-
File.open('facture_source.pdf', 'rb')
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
# 4. Polling manuel pour récupérer le résultat
|
|
136
|
-
task_id = response.id_tache
|
|
137
|
-
# ... (implémenter le polling)
|
|
130
|
+
result = JSON.parse(response.body)
|
|
131
|
+
token = result['access']
|
|
138
132
|
```
|
|
139
133
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
| Fonctionnalité | SDK brut | helpers |
|
|
143
|
-
|----------------|----------|---------|
|
|
144
|
-
| Authentification | Manuelle | Automatique |
|
|
145
|
-
| Refresh token | Manuel | Automatique |
|
|
146
|
-
| Polling tâches async | Manuel | Automatique (backoff) |
|
|
147
|
-
| Retry sur 401 | Manuel | Automatique |
|
|
148
|
-
|
|
149
|
-
## 🔑 Options d'authentification
|
|
134
|
+
**Accès aux credentials d'un client spécifique :**
|
|
150
135
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
Si vous gérez plusieurs clients :
|
|
136
|
+
Si vous gérez plusieurs clients et souhaitez accéder aux credentials (Chorus Pro, AFNOR PDP) d'un client particulier, ajoutez le champ `client_uid` :
|
|
154
137
|
|
|
155
138
|
```ruby
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
request.body = {
|
|
140
|
+
username: 'votre_email@example.com',
|
|
158
141
|
password: 'votre_mot_de_passe',
|
|
159
142
|
client_uid: 'identifiant_client' # UID du client cible
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### Configuration avancée
|
|
164
|
-
|
|
165
|
-
```ruby
|
|
166
|
-
client = Factpulse::Helpers::FactPulseClient.new(
|
|
167
|
-
email: 'votre_email@example.com',
|
|
168
|
-
password: 'votre_mot_de_passe',
|
|
169
|
-
api_url: 'https://factpulse.fr', # URL personnalisée
|
|
170
|
-
polling_interval: 2.0, # Intervalle de polling initial (secondes)
|
|
171
|
-
polling_timeout: 120.0, # Timeout de polling (secondes)
|
|
172
|
-
max_retries: 2 # Tentatives en cas de 401
|
|
173
|
-
)
|
|
143
|
+
}.to_json
|
|
174
144
|
```
|
|
175
145
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
L'API accepte plusieurs formats pour les montants :
|
|
146
|
+
### Via le Dashboard
|
|
179
147
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
# Float
|
|
185
|
-
montant = 1234.56
|
|
186
|
-
|
|
187
|
-
# Integer
|
|
188
|
-
montant = 1234
|
|
189
|
-
|
|
190
|
-
# BigDecimal
|
|
191
|
-
require 'bigdecimal'
|
|
192
|
-
montant = BigDecimal('1234.56')
|
|
193
|
-
|
|
194
|
-
# Helper de formatage
|
|
195
|
-
montant_formate = Factpulse::Helpers::FactPulseClient.format_montant(1234.5) # => "1234.50"
|
|
196
|
-
```
|
|
148
|
+
1. Connectez-vous sur https://factpulse.fr/api/dashboard/
|
|
149
|
+
2. Générez un token API
|
|
150
|
+
3. Copiez et utilisez le token dans votre configuration
|
|
197
151
|
|
|
198
152
|
## 📚 Ressources
|
|
199
153
|
|