Class: Einvoicing::Connect::FR::PPF::Submitter

Inherits:
Object
  • Object
show all
Defined in:
lib/einvoicing/connect/fr/ppf/submitter.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Submitter

Returns a new instance of Submitter.



8
9
10
# File 'lib/einvoicing/connect/fr/ppf/submitter.rb', line 8

def initialize(client)
  @client = client
end

Instance Method Details

#submit(invoice, code_service: nil, engagement_number: nil) ⇒ Object

Submit an invoice to Chorus Pro / PPF. Returns the submission result hash from the API.

Parameters:

  • invoice (Einvoicing::Invoice)
  • code_service (String, nil) (defaults to: nil)

    optional service code from list_services

  • engagement_number (String, nil) (defaults to: nil)

    optional engagement number

Raises:



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/einvoicing/connect/fr/ppf/submitter.rb', line 18

def submit(invoice, code_service: nil, engagement_number: nil)
  structure    = @client.find_structure(siret: invoice.buyer.siret)
  id_structure = structure["idStructureCPP"] || structure.dig("parametres", "idStructureCPP")
  raise ValidationError, ::I18n.t("einvoicing.connect.ppf.structure_not_found", siret: invoice.buyer.siret) unless id_structure

  payload = InvoiceAdapter.to_chorus_payload(
    invoice,
    id_structure_cpp:  id_structure,
    code_service:      code_service,
    engagement_number: engagement_number
  )

  @client.submit_invoice(payload)
end