Sha256: 85d80e971d57e1e47311d7b6e5f85335bd06f17c224cb8fcf963b131a23e1e23

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

require 'multi_json'

module Sellsy
  class CustomField
    attr_accessor :id, :value

    def initialize(id, value)
      @id = id
      @value = value
    end

    def self.set_values(entity, *custom_fields)
      command = {
          'method' => 'CustomFields.recordValues',
          'params' => {
              'linkedtype' => linked_type(entity),
              'linkedid' => entity.id,
              'values' => custom_fields.select {|cf| !cf.nil? && !cf.value.blank?}.map {|cf| {'cfid' => cf.id, 'value' => cf.value}}
          }
      }

      response = MultiJson.load(Sellsy::Api.request command)

      response['status'] == 'success'
    end

    def self.linked_type(entity)
      case entity
      when Customer
        'client'
      when Prospect
        'prospect'
      when Opportunity
        'opportunity'
      when Contact
        'people'
      when Document
        'document'
      else
        nil
      end
    end

    def self.all(nb_per_page = 30)
      command = {
          'method' => 'CustomFields.getList',
          'params' => {
              'pagination' => {
                  'nbperpage' => nb_per_page
              }
          }
      }
      response = MultiJson.load(Sellsy::Api.request command)

      response['status'] == 'success' ? response['response']['result'] : {}
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sellsy-client-0.10.0 lib/sellsy/custom_field.rb