Class: Einvoicing::PPF::Submitter

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

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Submitter

Returns a new instance of Submitter.



6
7
8
# File 'lib/einvoicing/ppf/submitter.rb', line 6

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:



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

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, "Buyer SIRET #{invoice.buyer.siret} not found in Chorus Pro" 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