lib/solidus_subscriptions/config.rb in solidus_subscriptions-alpha-0.0.3 vs lib/solidus_subscriptions/config.rb in solidus_subscriptions-alpha-0.0.4

- old
+ new

@@ -1,97 +1,97 @@ -module SolidusSubscriptions - module Config - class << self - # Processing Event handlers - # These handlers are pluggable, however it is highly encouraged that you - # subclass from the the dispatcher you are replacing, and call super - # from within the #dispatch method (if you override it) - # - # This handler is called when a susbcription order is successfully placed. - attr_writer :success_dispatcher_class - def success_dispatcher_class - @success_dispatcher_class ||= ::SolidusSubscriptions::SuccessDispatcher - end - - # This handler is called when an order cant be placed for a group of - # installments - attr_writer :failure_dispatcher_class - def failure_dispatcher_class - @failure_dispatcher_class ||= ::SolidusSubscriptions::FailureDispatcher - end - - # This handler is called when a payment fails on a subscription order - attr_writer :payment_failed_dispatcher_class - def payment_failed_dispatcher_class - @payment_failed_dispatcher_class ||= ::SolidusSubscriptions::PaymentFailedDispatcher - end - - # This handler is called when installemnts cannot be fulfilled due to lack - # of stock - attr_writer :out_of_stock_dispatcher - def out_of_stock_dispatcher_class - @out_of_stock_dispatcher_class ||= ::SolidusSubscriptions::OutOfStockDispatcher - end - - def default_gateway(&block) - return @gateway.call unless block_given? - @gateway = block - end - end - - # Maximum number of times a user can skip their subscription before it - # must be processed - mattr_accessor(:maximum_successive_skips) { 1 } - - # Limit on the number of times a user can skip thier subscription. Once - # this limit is reached, no skips are permitted - mattr_accessor(:maximum_total_skips) { nil } - - # Time between an installment failing to be processed and the system - # retrying to fulfil it - mattr_accessor(:reprocessing_interval) { 1.day } - - mattr_accessor(:minimum_cancellation_notice) { 1.day } - - # Which queue is responsible for processing subscriptions - mattr_accessor(:processing_queue) { :default } - - # SolidusSubscriptions::LineItem attributes which are allowed to - # be updated from user data - # - # This is useful in the case where certain fields should not be allowed to - # be modified by the user. This locks these attributes from being passed - # in to the orders controller (or the api controller). - - # Ie. if a store does not want to allow users to configure the end date of - # a subscription. Add this to an initializer: - - # ``` - # SolidusSubscriptions::Config.subscription_line_item_attributes = [ - # :quantity, - # :interval_length, - # :interval_units, - # :subscribable_id - # ] - # ``` - # This configuration also easily allows the gem to be customized to track - # more information on the subcriptions line items. - mattr_accessor(:subscription_line_item_attributes) do - [ - :quantity, - :subscribable_id, - :interval_length, - :interval_units, - :end_date - ] - end - - # SolidusSubscriptions::Subscription attributes which are allowed to - # be updated from user data - mattr_accessor(:subscription_attributes) do - [ - :actionable_date, - shipping_address_attributes: Spree::PermittedAttributes.address_attributes - ] - end - end -end +module SolidusSubscriptions + module Config + class << self + # Processing Event handlers + # These handlers are pluggable, however it is highly encouraged that you + # subclass from the the dispatcher you are replacing, and call super + # from within the #dispatch method (if you override it) + # + # This handler is called when a susbcription order is successfully placed. + attr_writer :success_dispatcher_class + def success_dispatcher_class + @success_dispatcher_class ||= ::SolidusSubscriptions::SuccessDispatcher + end + + # This handler is called when an order cant be placed for a group of + # installments + attr_writer :failure_dispatcher_class + def failure_dispatcher_class + @failure_dispatcher_class ||= ::SolidusSubscriptions::FailureDispatcher + end + + # This handler is called when a payment fails on a subscription order + attr_writer :payment_failed_dispatcher_class + def payment_failed_dispatcher_class + @payment_failed_dispatcher_class ||= ::SolidusSubscriptions::PaymentFailedDispatcher + end + + # This handler is called when installemnts cannot be fulfilled due to lack + # of stock + attr_writer :out_of_stock_dispatcher + def out_of_stock_dispatcher_class + @out_of_stock_dispatcher_class ||= ::SolidusSubscriptions::OutOfStockDispatcher + end + + def default_gateway(&block) + return @gateway.call unless block_given? + @gateway = block + end + end + + # Maximum number of times a user can skip their subscription before it + # must be processed + mattr_accessor(:maximum_successive_skips) { 1 } + + # Limit on the number of times a user can skip thier subscription. Once + # this limit is reached, no skips are permitted + mattr_accessor(:maximum_total_skips) { nil } + + # Time between an installment failing to be processed and the system + # retrying to fulfil it + mattr_accessor(:reprocessing_interval) { 1.day } + + mattr_accessor(:minimum_cancellation_notice) { 1.day } + + # Which queue is responsible for processing subscriptions + mattr_accessor(:processing_queue) { :default } + + # SolidusSubscriptions::LineItem attributes which are allowed to + # be updated from user data + # + # This is useful in the case where certain fields should not be allowed to + # be modified by the user. This locks these attributes from being passed + # in to the orders controller (or the api controller). + + # Ie. if a store does not want to allow users to configure the end date of + # a subscription. Add this to an initializer: + + # ``` + # SolidusSubscriptions::Config.subscription_line_item_attributes = [ + # :quantity, + # :interval_length, + # :interval_units, + # :subscribable_id + # ] + # ``` + # This configuration also easily allows the gem to be customized to track + # more information on the subcriptions line items. + mattr_accessor(:subscription_line_item_attributes) do + [ + :quantity, + :subscribable_id, + :interval_length, + :interval_units, + :end_date + ] + end + + # SolidusSubscriptions::Subscription attributes which are allowed to + # be updated from user data + mattr_accessor(:subscription_attributes) do + [ + :actionable_date, + shipping_address_attributes: Spree::PermittedAttributes.address_attributes + ] + end + end +end