Class: Nfe::Resources::LegalPeople
- Inherits:
-
AbstractResource
- Object
- AbstractResource
- Nfe::Resources::LegalPeople
- Defined in:
- lib/nfe/resources/legal_people.rb,
sig/nfe/resources/legal_people.rbs
Overview
Legal-people (pessoas jurÃdicas) resource, scoped by company under
/companies/{id}/legalpeople on the :main host family. The API wraps
responses in a {"legalPeople" => ...} envelope, unwrapped here before
hydrating LegalPerson.
Constant Summary collapse
- ENVELOPE =
"legalPeople"
Instance Attribute Summary
Attributes inherited from AbstractResource
Instance Method Summary collapse
- #api_family ⇒ Symbol
-
#create(company_id, data) ⇒ Nfe::LegalPerson
Create a legal person.
-
#create_batch(company_id, list) ⇒ Array<Nfe::LegalPerson>
Create several legal people.
-
#delete(company_id, legal_person_id) ⇒ nil
Delete a legal person.
-
#find_by_tax_number(company_id, federal_tax_number) ⇒ Nfe::LegalPerson?
Find a legal person by federal tax number (CNPJ).
- #json_body(data) ⇒ String
- #json_headers ⇒ Hash[String, String]
-
#list(company_id) ⇒ Nfe::ListResponse
List every legal person for a company (no pagination, parity with Node).
-
#retrieve(company_id, legal_person_id) ⇒ Nfe::LegalPerson
Retrieve a legal person by id.
-
#update(company_id, legal_person_id, data) ⇒ Nfe::LegalPerson
Update a legal person.
Methods inherited from AbstractResource
#api_version, #build_list_page, #build_multipart_body, #cursor_list_page, #dig_key, #download, #extract_invoice_id, #full_path, #get, #handle_async_response, #hydrate, #hydrate_list, #initialize, #multipart_part, #page_list_page, #parse_json, #post, #put, #unwrap, #upload_multipart
Constructor Details
This class inherits a constructor from Nfe::Resources::AbstractResource
Instance Method Details
#api_family ⇒ Symbol
18 19 20 |
# File 'lib/nfe/resources/legal_people.rb', line 18 def api_family :main end |
#create(company_id, data) ⇒ Nfe::LegalPerson
Create a legal person.
41 42 43 44 45 46 |
# File 'lib/nfe/resources/legal_people.rb', line 41 def create(company_id, data) id = Nfe::IdValidator.company_id(company_id) response = post("/companies/#{id}/legalpeople", body: json_body(data), headers: json_headers) hydrate(Nfe::LegalPerson, unwrap(parse_json(response.body), ENVELOPE)) end |
#create_batch(company_id, list) ⇒ Array<Nfe::LegalPerson>
Create several legal people. Unlike the Node SDK (+Promise.all+), this
runs the create calls sequentially and returns them in order.
92 93 94 |
# File 'lib/nfe/resources/legal_people.rb', line 92 def create_batch(company_id, list) list.map { |data| create(company_id, data) } end |
#delete(company_id, legal_person_id) ⇒ nil
Delete a legal person.
79 80 81 82 83 84 |
# File 'lib/nfe/resources/legal_people.rb', line 79 def delete(company_id, legal_person_id) id = Nfe::IdValidator.company_id(company_id) lpid = Nfe::IdValidator.presence!(legal_person_id, "legal_person_id") super("/companies/#{id}/legalpeople/#{lpid}") nil end |
#find_by_tax_number(company_id, federal_tax_number) ⇒ Nfe::LegalPerson?
Find a legal person by federal tax number (CNPJ). Convenience helper built on #list plus client-side filtering.
102 103 104 105 106 107 |
# File 'lib/nfe/resources/legal_people.rb', line 102 def find_by_tax_number(company_id, federal_tax_number) target = federal_tax_number.to_s.gsub(/[^0-9A-Za-z]/, "") list(company_id).data.find do |person| person.federal_tax_number.to_s.gsub(/[^0-9A-Za-z]/, "") == target end end |
#json_body(data) ⇒ String
115 116 117 |
# File 'lib/nfe/resources/legal_people.rb', line 115 def json_body(data) JSON.generate(data) end |
#json_headers ⇒ Hash[String, String]
111 112 113 |
# File 'lib/nfe/resources/legal_people.rb', line 111 def json_headers { "Content-Type" => "application/json" } end |
#list(company_id) ⇒ Nfe::ListResponse
List every legal person for a company (no pagination, parity with Node).
28 29 30 31 32 33 34 |
# File 'lib/nfe/resources/legal_people.rb', line 28 def list(company_id) id = Nfe::IdValidator.company_id(company_id) response = get("/companies/#{id}/legalpeople") items = (unwrap(parse_json(response.body), ENVELOPE) || []) .map { |item| hydrate(Nfe::LegalPerson, item) } Nfe::ListResponse.new(data: items) end |
#retrieve(company_id, legal_person_id) ⇒ Nfe::LegalPerson
Retrieve a legal person by id.
53 54 55 56 57 58 |
# File 'lib/nfe/resources/legal_people.rb', line 53 def retrieve(company_id, legal_person_id) id = Nfe::IdValidator.company_id(company_id) lpid = Nfe::IdValidator.presence!(legal_person_id, "legal_person_id") response = get("/companies/#{id}/legalpeople/#{lpid}") hydrate(Nfe::LegalPerson, unwrap(parse_json(response.body), ENVELOPE)) end |
#update(company_id, legal_person_id, data) ⇒ Nfe::LegalPerson
Update a legal person.
66 67 68 69 70 71 72 |
# File 'lib/nfe/resources/legal_people.rb', line 66 def update(company_id, legal_person_id, data) id = Nfe::IdValidator.company_id(company_id) lpid = Nfe::IdValidator.presence!(legal_person_id, "legal_person_id") response = put("/companies/#{id}/legalpeople/#{lpid}", body: json_body(data), headers: json_headers) hydrate(Nfe::LegalPerson, unwrap(parse_json(response.body), ENVELOPE)) end |