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.
Files changed (194) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -3
  3. data/Gemfile.lock +1 -1
  4. data/README.md +73 -119
  5. data/docs/AFNORPDPPADirectoryServiceApi.md +31 -1148
  6. data/docs/BodyAjouterFichierApiV1ChorusProTransversesAjouterFichierPost.md +22 -0
  7. data/docs/BodyCompleterFactureApiV1ChorusProFacturesCompleterPost.md +22 -0
  8. data/docs/BodyListerServicesStructureApiV1ChorusProStructuresIdStructureCppServicesGet.md +20 -0
  9. data/docs/BodyRechercherFacturesDestinataireApiV1ChorusProFacturesRechercherDestinatairePost.md +22 -0
  10. data/docs/BodyRechercherFacturesFournisseurApiV1ChorusProFacturesRechercherFournisseurPost.md +22 -0
  11. data/docs/BodyRecyclerFactureApiV1ChorusProFacturesRecyclerPost.md +22 -0
  12. data/docs/BodyTelechargerGroupeFacturesApiV1ChorusProFacturesTelechargerGroupePost.md +22 -0
  13. data/docs/BodyTraiterFactureRecueApiV1ChorusProFacturesTraiterFactureRecuePost.md +22 -0
  14. data/docs/BodyValideurConsulterFactureApiV1ChorusProFacturesValideurConsulterPost.md +22 -0
  15. data/docs/BodyValideurRechercherFacturesApiV1ChorusProFacturesValideurRechercherPost.md +22 -0
  16. data/docs/BodyValideurTraiterFactureApiV1ChorusProFacturesValideurTraiterPost.md +22 -0
  17. data/docs/ChorusProApi.md +70 -66
  18. data/docs/Destinataire.md +0 -4
  19. data/docs/{MontantAPayer.md → DirectionFlux.md} +2 -2
  20. data/docs/FactureEnrichieInfoInput.md +32 -0
  21. data/docs/{FactureEnrichieInfo.md → FactureEnrichieInfoOutput.md} +2 -2
  22. data/docs/FactureFacturX.md +0 -2
  23. data/docs/FluxResume.md +32 -0
  24. data/docs/Fournisseur.md +0 -2
  25. data/docs/LigneDePoste.md +2 -2
  26. data/docs/LigneDePosteMontantTotalLigneHt.md +15 -0
  27. data/docs/LigneDeTVA.md +2 -2
  28. data/docs/MontantTotal.md +5 -5
  29. data/docs/MontantTotalMontantRemiseGlobaleTtc.md +15 -0
  30. data/docs/{MontantBaseHt.md → Montantapayer.md} +2 -2
  31. data/docs/Montantbaseht.md +15 -0
  32. data/docs/Montanthttotal.md +15 -0
  33. data/docs/Montantttctotal.md +15 -0
  34. data/docs/{ErrorLevel.md → Montanttva.md} +2 -2
  35. data/docs/{ErrorSource.md → Montanttva1.md} +2 -2
  36. data/docs/Montantunitaireht.md +15 -0
  37. data/docs/OptionsProcessing.md +1 -1
  38. data/docs/PDPCredentials.md +24 -0
  39. data/docs/ProcessingEndpointsUnifisApi.md +147 -0
  40. data/docs/{StatutCelery.md → ProfilFlux.md} +2 -2
  41. data/docs/QuotaInfo.md +26 -0
  42. data/docs/ReponseHealthcheckAFNOR.md +22 -0
  43. data/docs/ReponseRechercheFlux.md +24 -0
  44. data/docs/ReponseSoumissionFlux.md +30 -0
  45. data/docs/RequeteRechercheFlux.md +34 -0
  46. data/docs/RequeteSoumissionFlux.md +28 -0
  47. data/docs/SantApi.md +0 -62
  48. data/docs/SignatureLectroniqueApi.md +315 -0
  49. data/docs/SoumettreFactureCompleteResponse.md +1 -1
  50. data/docs/SoumettreFactureRequest.md +3 -3
  51. data/docs/StatutAcquittement.md +15 -0
  52. data/docs/StatutTache.md +2 -2
  53. data/docs/SyntaxeFlux.md +15 -0
  54. data/docs/TraitementFactureApi.md +2 -2
  55. data/docs/TypeFlux.md +15 -0
  56. data/docs/Utilisateur.md +40 -0
  57. data/factpulse.gemspec +2 -2
  58. data/lib/factpulse/api/afnorpdppa_api.rb +1 -1
  59. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +30 -1014
  60. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +1 -1
  61. data/lib/factpulse/api/chorus_pro_api.rb +108 -95
  62. data/lib/factpulse/api/processing_endpoints_unifis_api.rb +158 -0
  63. data/lib/factpulse/api/sant_api.rb +1 -58
  64. data/lib/factpulse/api/signature_lectronique_api.rb +333 -0
  65. data/lib/factpulse/api/traitement_facture_api.rb +5 -5
  66. data/lib/factpulse/api/utilisateur_api.rb +1 -1
  67. data/lib/factpulse/api_client.rb +3 -7
  68. data/lib/factpulse/api_error.rb +1 -1
  69. data/lib/factpulse/api_model_base.rb +1 -1
  70. data/lib/factpulse/configuration.rb +1 -1
  71. data/lib/factpulse/models/adresse_electronique.rb +1 -1
  72. data/lib/factpulse/models/adresse_postale.rb +1 -1
  73. data/lib/factpulse/models/body_ajouter_fichier_api_v1_chorus_pro_transverses_ajouter_fichier_post.rb +202 -0
  74. data/lib/factpulse/models/body_completer_facture_api_v1_chorus_pro_factures_completer_post.rb +202 -0
  75. data/lib/factpulse/models/body_lister_services_structure_api_v1_chorus_pro_structures_id_structure_cpp_services_get.rb +174 -0
  76. data/lib/factpulse/models/body_rechercher_factures_destinataire_api_v1_chorus_pro_factures_rechercher_destinataire_post.rb +202 -0
  77. data/lib/factpulse/models/body_rechercher_factures_fournisseur_api_v1_chorus_pro_factures_rechercher_fournisseur_post.rb +202 -0
  78. data/lib/factpulse/models/body_recycler_facture_api_v1_chorus_pro_factures_recycler_post.rb +202 -0
  79. data/lib/factpulse/models/{api_error.rb → body_telecharger_groupe_factures_api_v1_chorus_pro_factures_telecharger_groupe_post.rb} +44 -47
  80. data/lib/factpulse/models/{note.rb → body_traiter_facture_recue_api_v1_chorus_pro_factures_traiter_facture_recue_post.rb} +55 -28
  81. data/lib/factpulse/models/body_valideur_consulter_facture_api_v1_chorus_pro_factures_valideur_consulter_post.rb +202 -0
  82. data/lib/factpulse/models/body_valideur_rechercher_factures_api_v1_chorus_pro_factures_valideur_rechercher_post.rb +202 -0
  83. data/lib/factpulse/models/body_valideur_traiter_facture_api_v1_chorus_pro_factures_valideur_traiter_post.rb +202 -0
  84. data/lib/factpulse/models/cadre_de_facturation.rb +1 -1
  85. data/lib/factpulse/models/categorie_tva.rb +11 -11
  86. data/lib/factpulse/models/certificate_info_response.rb +1 -1
  87. data/lib/factpulse/models/chorus_pro_credentials.rb +1 -1
  88. data/lib/factpulse/models/code_cadre_facturation.rb +1 -1
  89. data/lib/factpulse/models/code_raison_reduction.rb +9 -9
  90. data/lib/factpulse/models/consulter_facture_request.rb +1 -1
  91. data/lib/factpulse/models/consulter_facture_response.rb +1 -1
  92. data/lib/factpulse/models/consulter_structure_request.rb +1 -1
  93. data/lib/factpulse/models/consulter_structure_response.rb +1 -1
  94. data/lib/factpulse/models/credentials_afnor.rb +1 -1
  95. data/lib/factpulse/models/credentials_chorus_pro.rb +1 -1
  96. data/lib/factpulse/models/destinataire.rb +2 -22
  97. data/lib/factpulse/models/destination.rb +1 -1
  98. data/lib/factpulse/models/destination_afnor.rb +1 -1
  99. data/lib/factpulse/models/destination_chorus_pro.rb +1 -1
  100. data/lib/factpulse/models/{statut_celery.rb → direction_flux.rb} +7 -10
  101. data/lib/factpulse/models/donnees_facture_simplifiees.rb +1 -1
  102. data/lib/factpulse/models/facture_enrichie_info_input.rb +315 -0
  103. data/lib/factpulse/models/{facture_enrichie_info.rb → facture_enrichie_info_output.rb} +4 -4
  104. data/lib/factpulse/models/facture_factur_x.rb +2 -13
  105. data/lib/factpulse/models/flux_resume.rb +251 -0
  106. data/lib/factpulse/models/format_sortie.rb +1 -1
  107. data/lib/factpulse/models/fournisseur.rb +2 -12
  108. data/lib/factpulse/models/generate_certificate_request.rb +1 -1
  109. data/lib/factpulse/models/generate_certificate_response.rb +1 -1
  110. data/lib/factpulse/models/http_validation_error.rb +1 -1
  111. data/lib/factpulse/models/information_signature_api.rb +1 -1
  112. data/lib/factpulse/models/ligne_de_poste.rb +4 -3
  113. data/lib/factpulse/models/ligne_de_poste_montant_remise_ht.rb +2 -2
  114. data/lib/factpulse/models/{montant_total_ligne_ht.rb → ligne_de_poste_montant_total_ligne_ht.rb} +3 -3
  115. data/lib/factpulse/models/ligne_de_poste_taux_tva_manuel.rb +2 -2
  116. data/lib/factpulse/models/ligne_de_tva.rb +3 -3
  117. data/lib/factpulse/models/mode_depot.rb +1 -1
  118. data/lib/factpulse/models/mode_paiement.rb +1 -1
  119. data/lib/factpulse/models/montant_ht_total.rb +1 -2
  120. data/lib/factpulse/models/montant_total.rb +7 -6
  121. data/lib/factpulse/models/montant_total_acompte.rb +2 -2
  122. data/lib/factpulse/models/{montant_a_payer.rb → montant_total_montant_remise_globale_ttc.rb} +3 -3
  123. data/lib/factpulse/models/montant_ttc_total.rb +1 -2
  124. data/lib/factpulse/models/montant_tva.rb +1 -2
  125. data/lib/factpulse/models/{montant_tva_total.rb → montantapayer.rb} +3 -3
  126. data/lib/factpulse/models/{montant_tva_ligne.rb → montantbaseht.rb} +3 -3
  127. data/lib/factpulse/models/montanthttotal.rb +104 -0
  128. data/lib/factpulse/models/montantttctotal.rb +104 -0
  129. data/lib/factpulse/models/montanttva.rb +104 -0
  130. data/lib/factpulse/models/montanttva1.rb +104 -0
  131. data/lib/factpulse/models/{montant_unitaire_ht.rb → montantunitaireht.rb} +2 -2
  132. data/lib/factpulse/models/obtenir_id_chorus_pro_request.rb +1 -1
  133. data/lib/factpulse/models/obtenir_id_chorus_pro_response.rb +1 -1
  134. data/lib/factpulse/models/options_processing.rb +16 -2
  135. data/lib/factpulse/models/parametres_signature.rb +1 -1
  136. data/lib/factpulse/models/parametres_structure.rb +1 -1
  137. data/lib/factpulse/models/pdf_factur_x_info.rb +1 -1
  138. data/lib/factpulse/models/pdp_credentials.rb +247 -0
  139. data/lib/factpulse/models/piece_jointe_complementaire.rb +1 -1
  140. data/lib/factpulse/models/profil_api.rb +1 -1
  141. data/lib/factpulse/models/profil_flux.rb +41 -0
  142. data/lib/factpulse/models/quantite.rb +1 -1
  143. data/lib/factpulse/models/quota_info.rb +269 -0
  144. data/lib/factpulse/models/rechercher_services_response.rb +1 -1
  145. data/lib/factpulse/models/rechercher_structure_request.rb +1 -1
  146. data/lib/factpulse/models/rechercher_structure_response.rb +1 -1
  147. data/lib/factpulse/models/references.rb +1 -1
  148. data/lib/factpulse/models/reponse_healthcheck_afnor.rb +220 -0
  149. data/lib/factpulse/models/reponse_recherche_flux.rb +249 -0
  150. data/lib/factpulse/models/reponse_soumission_flux.rb +294 -0
  151. data/lib/factpulse/models/reponse_tache.rb +1 -1
  152. data/lib/factpulse/models/reponse_validation_erreur.rb +1 -1
  153. data/lib/factpulse/models/reponse_validation_succes.rb +1 -1
  154. data/lib/factpulse/models/requete_recherche_flux.rb +306 -0
  155. data/lib/factpulse/models/{validation_error_detail.rb → requete_soumission_flux.rb} +61 -68
  156. data/lib/factpulse/models/resultat_afnor.rb +1 -1
  157. data/lib/factpulse/models/resultat_chorus_pro.rb +1 -1
  158. data/lib/factpulse/models/resultat_validation_pdfapi.rb +1 -1
  159. data/lib/factpulse/models/scheme_id.rb +7 -7
  160. data/lib/factpulse/models/service_structure.rb +1 -1
  161. data/lib/factpulse/models/signature_info.rb +1 -1
  162. data/lib/factpulse/models/soumettre_facture_complete_request.rb +1 -1
  163. data/lib/factpulse/models/soumettre_facture_complete_response.rb +2 -2
  164. data/lib/factpulse/models/soumettre_facture_request.rb +7 -4
  165. data/lib/factpulse/models/soumettre_facture_response.rb +1 -1
  166. data/lib/factpulse/models/{error_level.rb → statut_acquittement.rb} +7 -6
  167. data/lib/factpulse/models/statut_facture.rb +1 -1
  168. data/lib/factpulse/models/statut_tache.rb +5 -30
  169. data/lib/factpulse/models/structure_info.rb +1 -1
  170. data/lib/factpulse/models/{error_source.rb → syntaxe_flux.rb} +10 -13
  171. data/lib/factpulse/models/tauxmanuel.rb +2 -2
  172. data/lib/factpulse/models/type_facture.rb +1 -1
  173. data/lib/factpulse/models/type_flux.rb +43 -0
  174. data/lib/factpulse/models/type_tva.rb +1 -1
  175. data/lib/factpulse/models/unite.rb +1 -1
  176. data/lib/factpulse/models/utilisateur.rb +328 -0
  177. data/lib/factpulse/models/validation_error.rb +1 -1
  178. data/lib/factpulse/models/validation_error_loc_inner.rb +1 -1
  179. data/lib/factpulse/version.rb +2 -2
  180. data/lib/factpulse.rb +39 -15
  181. metadata +79 -42
  182. data/docs/APIError.md +0 -22
  183. data/docs/MontantRemiseGlobaleTtc.md +0 -15
  184. data/docs/MontantTotalLigneHt.md +0 -15
  185. data/docs/MontantTvaLigne.md +0 -15
  186. data/docs/MontantTvaTotal.md +0 -15
  187. data/docs/MontantUnitaireHt.md +0 -15
  188. data/docs/Note.md +0 -20
  189. data/docs/ValidationErrorDetail.md +0 -26
  190. data/lib/factpulse/helpers/client.rb +0 -300
  191. data/lib/factpulse/helpers/exceptions.rb +0 -21
  192. data/lib/factpulse/helpers.rb +0 -13
  193. data/lib/factpulse/models/montant_base_ht.rb +0 -104
  194. 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: 4b18d85cbff7b4e8aa1f678bc18acba5121fd4b5df4b160a86b785bf56f4ec35
4
- data.tar.gz: a7205107926d1a7b97474851c10a6af637281168926dcecc037675a6d3783c2f
3
+ metadata.gz: 3ce0f1f2fe92c3fa54367c5becea06a2cc0f8a2235e14fdea09a8eb59fe3a336
4
+ data.tar.gz: 61180b0780bd01888e992885050450d294a5bedbf6ed7487ac18bcc59598a2ce
5
5
  SHA512:
6
- metadata.gz: 43f8765a2cb63397a997f530c8d050faf120b7bd5be88acb8261f44f4dbfbda376f3dbc472b8194d6fee113246553165d4c19a329a919deae0af54580f96aa4e
7
- data.tar.gz: 81cca817bfa1fdbc3d743f3feb49ab8ac19543aa8a2d4cd06f13f8866ebb1330f935e2870f9ee554effcaa548c80c348be98004189961a6e751deb7c044d06f7
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.0] - 2025-11-27
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.0...HEAD
28
- [1.0.0]: https://github.com/factpulse/sdk-ruby/releases/tag/v1.0.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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- factpulse (1.0.0)
4
+ factpulse (1.0.8)
5
5
  typhoeus (~> 1.0, >= 1.0.1)
6
6
 
7
7
  GEM
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
- - **Client simplifié** : Authentification JWT et polling intégrés via `helpers`
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
- ### Méthode recommandée : Client simplifié avec helpers
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
- # Créer le client (authentification automatique)
37
- client = Factpulse::Helpers::FactPulseClient.new(
38
- email: 'votre_email@example.com',
39
- password: 'votre_mot_de_passe'
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: 'FAC-2025-001',
45
- date_facture: '2025-01-15',
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: 'Mon Entreprise SAS',
48
- siret: '12345678901234',
54
+ nom: "Mon Entreprise SAS",
55
+ siret: "12345678901234",
49
56
  adresse_postale: {
50
- ligne_un: '123 Rue Example',
51
- code_postal: '75001',
52
- nom_ville: 'Paris',
53
- pays_code_iso: 'FR'
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: 'Client SARL',
58
- siret: '98765432109876',
64
+ nom: "Client SARL",
65
+ siret: "98765432109876",
59
66
  adresse_postale: {
60
- ligne_un: '456 Avenue Test',
61
- code_postal: '69001',
62
- nom_ville: 'Lyon',
63
- pays_code_iso: 'FR'
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: 'Prestation de conseil',
75
- quantite: '10.00',
76
- unite: 'PIECE',
77
- montant_unitaire_ht: '100.00'
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
- # Lire le PDF source
82
- pdf_source = File.binread('facture_source.pdf')
83
-
84
- # Générer le PDF Factur-X (polling automatique)
85
- pdf_bytes = client.generer_facturx(
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.binwrite('facture_facturx.pdf', pdf_bytes)
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
- ### Méthode alternative : SDK brut
110
+ ## 🔑 Obtention du token JWT
98
111
 
99
- Pour un contrôle total, utilisez le SDK généré directement :
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, { 'Content-Type' => 'application/json' })
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
- token = JSON.parse(response.body)['access']
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
- ## 🔧 Avantages des helpers
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
- ### Client UID (multi-clients)
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
- client = Factpulse::Helpers::FactPulseClient.new(
157
- email: 'votre_email@example.com',
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
- ## 💡 Formats de montants acceptés
177
-
178
- L'API accepte plusieurs formats pour les montants :
146
+ ### Via le Dashboard
179
147
 
180
- ```ruby
181
- # String (recommandé pour la précision)
182
- montant = '1234.56'
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