Class: Merge::Hris::Employment

Inherits:
Object
  • Object
show all
Defined in:
lib/merge_ruby_client/hris/types/employment.rb

Overview

The Employment Object

Description

The Employment object is used to represent a job position at a company. If an integration supports historical tracking of employments, it will be reflected in the data. If not, a new Employment object will be created whenever there is a change in job title or pay. The effective_date field should be used to order Employment objects, with the most recent date corresponding to the latest employment record for an employee.

Usage Example

Fetch from the LIST Employments endpoint and filter by ID to show all employees.

Constant Summary collapse

OMIT =
Object.new

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id: OMIT, remote_id: OMIT, created_at: OMIT, modified_at: OMIT, employee: OMIT, job_title: OMIT, pay_rate: OMIT, pay_period: OMIT, pay_frequency: OMIT, pay_currency: OMIT, pay_group: OMIT, flsa_status: OMIT, effective_date: OMIT, employment_type: OMIT, remote_was_deleted: OMIT, field_mappings: OMIT, remote_data: OMIT, additional_properties: nil) ⇒ Merge::Hris::Employment



762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 762

def initialize(id: OMIT, remote_id: OMIT, created_at: OMIT, modified_at: OMIT, employee: OMIT, job_title: OMIT,
               pay_rate: OMIT, pay_period: OMIT, pay_frequency: OMIT, pay_currency: OMIT, pay_group: OMIT, flsa_status: OMIT, effective_date: OMIT, employment_type: OMIT, remote_was_deleted: OMIT, field_mappings: OMIT, remote_data: OMIT, additional_properties: nil)
  @id = id if id != OMIT
  @remote_id = remote_id if remote_id != OMIT
  @created_at = created_at if created_at != OMIT
  @modified_at = modified_at if modified_at != OMIT
  @employee = employee if employee != OMIT
  @job_title = job_title if job_title != OMIT
  @pay_rate = pay_rate if pay_rate != OMIT
  @pay_period = pay_period if pay_period != OMIT
  @pay_frequency = pay_frequency if pay_frequency != OMIT
  @pay_currency = pay_currency if pay_currency != OMIT
  @pay_group = pay_group if pay_group != OMIT
  @flsa_status = flsa_status if flsa_status != OMIT
  @effective_date = effective_date if effective_date != OMIT
  @employment_type = employment_type if employment_type != OMIT
  @remote_was_deleted = remote_was_deleted if remote_was_deleted != OMIT
  @field_mappings = field_mappings if field_mappings != OMIT
  @remote_data = remote_data if remote_data != OMIT
  @additional_properties = additional_properties
  @_field_set = {
    "id": id,
    "remote_id": remote_id,
    "created_at": created_at,
    "modified_at": modified_at,
    "employee": employee,
    "job_title": job_title,
    "pay_rate": pay_rate,
    "pay_period": pay_period,
    "pay_frequency": pay_frequency,
    "pay_currency": pay_currency,
    "pay_group": pay_group,
    "flsa_status": flsa_status,
    "effective_date": effective_date,
    "employment_type": employment_type,
    "remote_was_deleted": remote_was_deleted,
    "field_mappings": field_mappings,
    "remote_data": remote_data
  }.reject do |_k, v|
    v == OMIT
  end
end

Instance Attribute Details

#additional_propertiesOpenStruct (readonly)



400
401
402
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 400

def additional_properties
  @additional_properties
end

#created_atDateTime (readonly)



34
35
36
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 34

def created_at
  @created_at
end

#effective_dateDateTime (readonly)



382
383
384
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 382

def effective_date
  @effective_date
end

#employeeMerge::Hris::EmploymentEmployee (readonly)



38
39
40
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 38

def employee
  @employee
end

#employment_typeMerge::Hris::EmploymentTypeEnum (readonly)



389
390
391
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 389

def employment_type
  @employment_type
end

#field_mappingsHash{String => Object} (readonly)



396
397
398
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 396

def field_mappings
  @field_mappings
end

#flsa_statusMerge::Hris::FlsaStatusEnum (readonly)



380
381
382
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 380

def flsa_status
  @flsa_status
end

#idString (readonly)



30
31
32
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 30

def id
  @id
end

#job_titleString (readonly)



40
41
42
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 40

def job_title
  @job_title
end

#modified_atDateTime (readonly)



36
37
38
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 36

def modified_at
  @modified_at
end

#pay_currencyMerge::Hris::PayCurrencyEnum (readonly)



372
373
374
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 372

def pay_currency
  @pay_currency
end

#pay_frequencyMerge::Hris::PayFrequencyEnum (readonly)



64
65
66
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 64

def pay_frequency
  @pay_frequency
end

#pay_groupMerge::Hris::EmploymentPayGroup (readonly)



374
375
376
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 374

def pay_group
  @pay_group
end

#pay_periodMerge::Hris::PayPeriodEnum (readonly)



53
54
55
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 53

def pay_period
  @pay_period
end

#pay_rateFloat (readonly)



42
43
44
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 42

def pay_rate
  @pay_rate
end

#remote_dataArray<Merge::Hris::RemoteData> (readonly)



398
399
400
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 398

def remote_data
  @remote_data
end

#remote_idString (readonly)



32
33
34
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 32

def remote_id
  @remote_id
end

#remote_was_deletedBoolean (readonly)



394
395
396
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 394

def remote_was_deleted
  @remote_was_deleted
end

Class Method Details

.from_json(json_object:) ⇒ Merge::Hris::Employment

Deserialize a JSON object to an instance of Employment



809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 809

def self.from_json(json_object:)
  struct = JSON.parse(json_object, object_class: OpenStruct)
  parsed_json = JSON.parse(json_object)
  id = parsed_json["id"]
  remote_id = parsed_json["remote_id"]
  created_at = (DateTime.parse(parsed_json["created_at"]) unless parsed_json["created_at"].nil?)
  modified_at = (DateTime.parse(parsed_json["modified_at"]) unless parsed_json["modified_at"].nil?)
  if parsed_json["employee"].nil?
    employee = nil
  else
    employee = parsed_json["employee"].to_json
    employee = Merge::Hris::EmploymentEmployee.from_json(json_object: employee)
  end
  job_title = parsed_json["job_title"]
  pay_rate = parsed_json["pay_rate"]
  pay_period = parsed_json["pay_period"]
  pay_frequency = parsed_json["pay_frequency"]
  pay_currency = parsed_json["pay_currency"]
  if parsed_json["pay_group"].nil?
    pay_group = nil
  else
    pay_group = parsed_json["pay_group"].to_json
    pay_group = Merge::Hris::EmploymentPayGroup.from_json(json_object: pay_group)
  end
  flsa_status = parsed_json["flsa_status"]
  effective_date = (DateTime.parse(parsed_json["effective_date"]) unless parsed_json["effective_date"].nil?)
  employment_type = parsed_json["employment_type"]
  remote_was_deleted = parsed_json["remote_was_deleted"]
  field_mappings = parsed_json["field_mappings"]
  remote_data = parsed_json["remote_data"]&.map do |item|
    item = item.to_json
    Merge::Hris::RemoteData.from_json(json_object: item)
  end
  new(
    id: id,
    remote_id: remote_id,
    created_at: created_at,
    modified_at: modified_at,
    employee: employee,
    job_title: job_title,
    pay_rate: pay_rate,
    pay_period: pay_period,
    pay_frequency: pay_frequency,
    pay_currency: pay_currency,
    pay_group: pay_group,
    flsa_status: flsa_status,
    effective_date: effective_date,
    employment_type: employment_type,
    remote_was_deleted: remote_was_deleted,
    field_mappings: field_mappings,
    remote_data: remote_data,
    additional_properties: struct
  )
end

.validate_raw(obj:) ⇒ Void

Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.



877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 877

def self.validate_raw(obj:)
  obj.id&.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
  obj.remote_id&.is_a?(String) != false || raise("Passed value for field obj.remote_id is not the expected type, validation failed.")
  obj.created_at&.is_a?(DateTime) != false || raise("Passed value for field obj.created_at is not the expected type, validation failed.")
  obj.modified_at&.is_a?(DateTime) != false || raise("Passed value for field obj.modified_at is not the expected type, validation failed.")
  obj.employee.nil? || Merge::Hris::EmploymentEmployee.validate_raw(obj: obj.employee)
  obj.job_title&.is_a?(String) != false || raise("Passed value for field obj.job_title is not the expected type, validation failed.")
  obj.pay_rate&.is_a?(Float) != false || raise("Passed value for field obj.pay_rate is not the expected type, validation failed.")
  obj.pay_period&.is_a?(Merge::Hris::PayPeriodEnum) != false || raise("Passed value for field obj.pay_period is not the expected type, validation failed.")
  obj.pay_frequency&.is_a?(Merge::Hris::PayFrequencyEnum) != false || raise("Passed value for field obj.pay_frequency is not the expected type, validation failed.")
  obj.pay_currency&.is_a?(Merge::Hris::PayCurrencyEnum) != false || raise("Passed value for field obj.pay_currency is not the expected type, validation failed.")
  obj.pay_group.nil? || Merge::Hris::EmploymentPayGroup.validate_raw(obj: obj.pay_group)
  obj.flsa_status&.is_a?(Merge::Hris::FlsaStatusEnum) != false || raise("Passed value for field obj.flsa_status is not the expected type, validation failed.")
  obj.effective_date&.is_a?(DateTime) != false || raise("Passed value for field obj.effective_date is not the expected type, validation failed.")
  obj.employment_type&.is_a?(Merge::Hris::EmploymentTypeEnum) != false || raise("Passed value for field obj.employment_type is not the expected type, validation failed.")
  obj.remote_was_deleted&.is_a?(Boolean) != false || raise("Passed value for field obj.remote_was_deleted is not the expected type, validation failed.")
  obj.field_mappings&.is_a?(Hash) != false || raise("Passed value for field obj.field_mappings is not the expected type, validation failed.")
  obj.remote_data&.is_a?(Array) != false || raise("Passed value for field obj.remote_data is not the expected type, validation failed.")
end

Instance Method Details

#to_json(*_args) ⇒ String

Serialize an instance of Employment to a JSON object



867
868
869
# File 'lib/merge_ruby_client/hris/types/employment.rb', line 867

def to_json(*_args)
  @_field_set&.to_json
end