Class: Atol::Request::PostDocument::Correction::V5::Body

Inherits:
Object
  • Object
show all
Defined in:
lib/atol/request/post_document/correction/v5/body.rb

Defined Under Namespace

Classes: BadAdditionalCheckPropsError, BadCorrectionBaseDateError, BadCorrectionBaseNumberError, BadCorrectionTypeError

Constant Summary collapse

CORRECTION_TYPES =
%w[self instruction].freeze
BASE_DATE_FORMAT =
/\A\d{2}\.\d{2}\.\d{4}\z/
BASE_NUMBER_MAX_BYTESIZE =
32
ADDITIONAL_CHECK_PROPS_MAX_BYTESIZE =
16

Instance Method Summary collapse

Constructor Details

#initialize(external_id:, items:, correction_type:, base_date:, phone: '', email: '', payments: nil, base_number: nil, additional_check_props: nil, config: nil, **options) ⇒ Body

Returns a new instance of Body.



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/atol/request/post_document/correction/v5/body.rb', line 22

def initialize(external_id:, items:, correction_type:, base_date:, phone: '', email: '',
               payments: nil, base_number: nil, additional_check_props: nil, config: nil, **options)
  raise(Atol::EmptyClientContactError) if phone.empty? && email.empty?
  raise(Atol::EmptySellItemsError) if items.empty?
  raise(BadCorrectionTypeError) unless CORRECTION_TYPES.include?(correction_type)
  raise(BadCorrectionBaseDateError) unless base_date.to_s.match?(BASE_DATE_FORMAT)
  raise(BadCorrectionBaseNumberError) if base_number && base_number.to_s.bytesize > BASE_NUMBER_MAX_BYTESIZE
  if additional_check_props && additional_check_props.to_s.bytesize > ADDITIONAL_CHECK_PROPS_MAX_BYTESIZE
    raise(BadAdditionalCheckPropsError)
  end

  total = items.sum { |item| item[:sum] }
  validate_payments!(payments, total)

  @config = config || Atol.config
  @external_id = external_id
  @phone = phone
  @email = email
  @items = items
  @correction_type = correction_type
  @base_date = base_date
  @base_number = base_number
  @additional_check_props = additional_check_props
  @total = total
  @payments = payments
end

Instance Method Details

#to_hObject



49
50
51
# File 'lib/atol/request/post_document/correction/v5/body.rb', line 49

def to_h
  build_body.clone
end

#to_json(*_args) ⇒ Object



53
54
55
# File 'lib/atol/request/post_document/correction/v5/body.rb', line 53

def to_json(*_args)
  build_body.to_json
end