Class: Cpro::Cdv::Message
- Inherits:
-
Object
- Object
- Cpro::Cdv::Message
- Defined in:
- lib/cpro/cdv/message.rb
Overview
Construit un message de cycle de vie au format CDAR D22B, conforme à l'Annexe A de la norme AFNOR XP Z12-012 (feuillet « CDV FE - CDAR »).
L'ordre des éléments suit celui du feuillet, qui liste les données dans l'ordre du schéma : faute de XSD dans les documents disponibles, c'est le meilleur signal dont on dispose.
Constant Summary collapse
- NAMESPACES =
Relevés du XSD CDAR D22B (CrossDomainAcknowledgementAndResponse_100pD22B.xsd).
{ "xmlns:rsm" => "urn:un:unece:uncefact:data:standard:CrossDomainAcknowledgementAndResponse:100", "xmlns:ram" => "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100", "xmlns:qdt" => "urn:un:unece:uncefact:data:standard:QualifiedDataType:100", "xmlns:udt" => "urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" }.freeze
- PROFIL =
MDT-3, BR-FR-CDV-02
"urn.cpro.gouv.fr:1p0:CDV:invoice"- PROCESSUS =
MDT-2, BR-FR-CDV-CL-01
"REGULATED"- SCHEME_SIRET =
ICD 6523
"0009"- ROLE_VENDEUR =
BR-FR-CDV-CL-02/03/07
"SE"- ROLE_ACHETEUR =
BR-FR-CDV-CL-04
"BY"- SCHEME_ADRESSAGE =
EAS : adresse annuaire national, MDT-73-1
"0225"- FORMAT_DATE_HEURE =
UNTDID 2379 : AAAAMMJJHHMMSS
"204"- FORMAT_DATE =
AAAAMMJJ
"102"- TYPE_MONTANT_ENCAISSE =
MDT-207, BR-FR-CDV-14
"MEN"- TYPE_REFERENCE_FACTURE =
MDT-97, règle G7.14 : URN du type d'objet sur lequel porte le cycle de vie.
"urn.cpro.gouv.fr:1p0:CDV:einvoicingF2"
Instance Attribute Summary collapse
-
#facture ⇒ Object
readonly
Returns the value of attribute facture.
-
#statut ⇒ Object
readonly
Returns the value of attribute statut.
Instance Method Summary collapse
- #horodatage ⇒ Object
- #identifiant ⇒ Object
-
#initialize(facture:, statut:, emetteur: nil, destinataire: nil, motif: nil, montant: nil, taux_tva: nil, identifiant: nil, horodatage: nil, type_reference: TYPE_REFERENCE_FACTURE, raison_sociale_emetteur: nil, raison_sociale_destinataire: nil, adressage_destinataire: nil) ⇒ Message
constructor
A new instance of Message.
- #nom_fichier ⇒ Object
- #to_xml ⇒ Object
Constructor Details
#initialize(facture:, statut:, emetteur: nil, destinataire: nil, motif: nil, montant: nil, taux_tva: nil, identifiant: nil, horodatage: nil, type_reference: TYPE_REFERENCE_FACTURE, raison_sociale_emetteur: nil, raison_sociale_destinataire: nil, adressage_destinataire: nil) ⇒ Message
Returns a new instance of Message.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/cpro/cdv/message.rb', line 35 def initialize(facture:, statut:, emetteur: nil, destinataire: nil, motif: nil, montant: nil, taux_tva: nil, identifiant: nil, horodatage: nil, type_reference: TYPE_REFERENCE_FACTURE, raison_sociale_emetteur: nil, raison_sociale_destinataire: nil, adressage_destinataire: nil) @facture = facture @statut = Statut[statut] @emetteur = emetteur || facture.siret_vendeur @raison_sociale_emetteur = || facture. @destinataire = destinataire || facture.siret_acheteur @raison_sociale_destinataire = || facture. @adressage_destinataire = adressage_destinataire || facture.id_adressage_acheteur @motif = motif @montant = montant @taux_tva = taux_tva @type_reference = type_reference @identifiant = identifiant @horodatage = horodatage valider! end |
Instance Attribute Details
#facture ⇒ Object (readonly)
Returns the value of attribute facture.
33 34 35 |
# File 'lib/cpro/cdv/message.rb', line 33 def facture @facture end |
#statut ⇒ Object (readonly)
Returns the value of attribute statut.
33 34 35 |
# File 'lib/cpro/cdv/message.rb', line 33 def statut @statut end |
Instance Method Details
#horodatage ⇒ Object
59 60 61 |
# File 'lib/cpro/cdv/message.rb', line 59 def horodatage @horodatage ||= Time.now.utc end |
#identifiant ⇒ Object
55 56 57 |
# File 'lib/cpro/cdv/message.rb', line 55 def identifiant @identifiant ||= "CDV-#{facture.numero}-#{@statut.code}" end |
#nom_fichier ⇒ Object
76 77 78 |
# File 'lib/cpro/cdv/message.rb', line 76 def nom_fichier "#{identifiant}.xml" end |
#to_xml ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/cpro/cdv/message.rb', line 63 def to_xml document = REXML::Document.new document << REXML::XMLDecl.new("1.0", "UTF-8") racine = document.add_element("rsm:CrossDomainAcknowledgementAndResponse", NAMESPACES) contexte(racine) document_echange(racine) accuse(racine) rendu = +"" REXML::Formatters::Pretty.new(2).tap { |f| f.compact = true }.write(document, rendu) "#{rendu}\n" end |