class LucaDeal::Customer

Public Class Methods

create(obj) click to toggle source
Calls superclass method
# File lib/luca_deal/customer.rb, line 38
def self.create(obj)
  raise ':name is required' if obj[:name].nil?

  contacts = obj[:contact]&.map { |c| { 'mail' => c[:mail] } }&.compact
  contacts ||= [{
    'mail' => '_MAIL_ADDRESS_FOR_CONTACT_'
  }]
  h = {
    'name' => obj[:name],
    'address' => obj[:address] || '_CUSTOMER_ADDRESS_FOR_INVOICE_',
    'address2' => obj[:address2] || '_CUSTOMER_ADDRESS_FOR_INVOICE_',
    'contacts' => contacts
  }
  super(h)
end
new() click to toggle source
# File lib/luca_deal/customer.rb, line 15
def initialize
  @date = Date.today
end

Public Instance Methods

describe(id) click to toggle source
# File lib/luca_deal/customer.rb, line 23
def describe(id)
  customer = parse_current(self.class.find(id))
  contracts = Contract.all.select { |contract| contract['customer_id'] == customer['id'] }
  if !contracts.empty?
    customer['contracts'] = contracts.map do |c|
      {
        'id' => c['id'],
        'effective' => c['terms']['effective'],
        'defunct' => c['terms']['defunct']
      }
    end
  end
  readable(customer)
end
list_name() click to toggle source
# File lib/luca_deal/customer.rb, line 19
def list_name
  self.class.all.map { |dat| parse_current(dat).sort.to_h }
end