Sha256: 6e94b0b899f89c65acf146bfac8019f12d79084df59b58ad3e9454a6269c972c

Contents?: true

Size: 1.74 KB

Versions: 35

Compression:

Stored size: 1.74 KB

Contents

module Centaman
  class Object::Extra < Centaman::Object
    attr_accessor :quantity

    def after_init(_args = {})
      @quantity = 0
    end

    def price
      @price ||= tax_inclusive ? calculate_price_before_tax : price_including_tax
    end

    def calculate_price_before_tax
      p = price_including_tax / (1 + tax_percentage / 100)
      p.round(2)
    end

    def json
      {
        id: id,
        description: description,
        quantity: quantity,
        price: price,
        deposit_percentage: deposit_percentage,
        tax_inclusive: tax_inclusive,
        tax_percentage: tax_percentage
      }
    end

    def description
      @extra_description.gsub!('Bar Package Cocktail Cruises', 'Bar Package')
      @description = @extra_description
    end

    # rubocop:disable Metrics/MethodLength
    def attributes
      [
        Centaman::Attribute.new(
          centaman_key: 'ExtraId',
          app_key: :id,
          type: :integer
        ),
        Centaman::Attribute.new(
          centaman_key: 'ExtraDescription',
          app_key: :extra_description,
          type: :string
        ),
        Centaman::Attribute.new(
          centaman_key: 'ExtraPrice',
          app_key: :price_including_tax,
          type: :float
        ),
        Centaman::Attribute.new(
          centaman_key: 'DepositPercentage',
          app_key: :deposit_percentage,
          type: :float
        ),
        Centaman::Attribute.new(
          centaman_key: 'IsTaxInclusive',
          app_key: :tax_inclusive,
          type: :boolean
        ),
        Centaman::Attribute.new(
          centaman_key: 'TaxPercentage',
          app_key: :tax_percentage,
          type: :float
        )
      ]
    end
    # rubocop:enable Metrics/MethodLength
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
centaman-5.0.4 lib/centaman/object/extra.rb
centaman-5.0.3 lib/centaman/object/extra.rb
centaman-5.0.2 lib/centaman/object/extra.rb
centaman-5.0.1 lib/centaman/object/extra.rb
centaman-5.0.0 lib/centaman/object/extra.rb
centaman-4.0.5 lib/centaman/object/extra.rb
centaman-4.0.4 lib/centaman/object/extra.rb
centaman-4.0.3 lib/centaman/object/extra.rb
centaman-4.0.2 lib/centaman/object/extra.rb
centaman-4.0.1 lib/centaman/object/extra.rb
centaman-3.1.2 lib/centaman/object/extra.rb
centaman-3.1.1 lib/centaman/object/extra.rb
centaman-3.1.0 lib/centaman/object/extra.rb
centaman-3.0.0 lib/centaman/object/extra.rb
centaman-2.1.0 lib/centaman/object/extra.rb
centaman-2.0.0 lib/centaman/object/extra.rb
centaman-1.0.0 lib/centaman/object/extra.rb
centaman-0.2.3 lib/centaman/object/extra.rb
centaman-0.2.2 lib/centaman/object/extra.rb
centaman-0.2.1 lib/centaman/object/extra.rb