Sha256: 505f92a4703b58778d17ae893ab753e90a815da4a82eb88fa1a1607001745043

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

module Workarea
  decorate Storefront::ProductViewModel, with: :afterpay do
    decorated do
      include Storefront::AfterpayConfiguration
    end

    def show_afterpay?
      return unless pricing.has_prices?
      return unless afterpay_settings.enabled? && afterpay_settings.display_on_pdp?
      return unless afterpay_location_configuration.present?

      afterpay_location_configuration.any? do |ap|
        pricing.sell_min_price >= min_price && pricing.sell_min_price <= max_price
      end
    end

    def installment_price
      pricing.sell_min_price / Workarea::Afterpay.config[:installment_count]
    end

    private

      def min_price
        config = afterpay_location_configuration.first.with_indifferent_access
        return 0.to_m unless config[:minimumAmount].present?
        config[:minimumAmount][:amount].to_m
      end

      def max_price
        config = afterpay_location_configuration.first.with_indifferent_access
        config[:maximumAmount][:amount].to_m
      end

      def afterpay_location
        currency = pricing.sell_min_price.currency.iso_code
        location = Workarea::Afterpay.config[:currency_country_map][currency.to_sym]
        return unless location.present?

        location.to_sym.downcase
      end

      def afterpay_location_configuration
        afterpay_configuration(afterpay_location)
      end

      def afterpay_settings
        @afterpay_settings ||= Workarea::Afterpay::Configuration.current
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
workarea-afterpay-2.0.2 app/view_models/workarea/storefront/product_view_model.decorator