1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/app/services/invoices/recipient_service.rb
2023-01-05 12:09:16 +01:00

42 lines
1.3 KiB
Ruby

# frozen_string_literal: true
# module definition
module Invoices; end
# The recipient may be be an individual or an organization
class Invoices::RecipientService
class << self
# Get the full name of the recipient for the given invoice.
# @param invoice [Invoice]
# @return [String]
def name(invoice)
if invoice.invoicing_profile.organization
name = invoice.invoicing_profile.organization.name
"#{name} (#{invoice.invoicing_profile.full_name})"
else
invoice.invoicing_profile.full_name
end
end
# Get the street address of the recipient for the given invoice.
# @param invoice [Invoice]
# @return [String]
def address(invoice)
invoice.invoicing_profile&.invoicing_address
end
# Get the optional data in profile_custom_fields, if the recipient is an organization
# @param invoice [Invoice]
# @return [Array<String>]
def organization_data(invoice)
return unless invoice.invoicing_profile.organization
invoice.invoicing_profile.user_profile_custom_fields&.joins(:profile_custom_field)
&.where('profile_custom_fields.actived' => true)
&.order('profile_custom_fields.id ASC')
&.select { |f| f.value.present? }
&.map { |f| "#{f.profile_custom_field.label}: #{f.value}" }
end
end
end