Sha256: 394cbda293e2fe40d8759f5a15f28fa6064ba397465ca65dbe978ef0a863c022

Contents?: true

Size: 1.53 KB

Versions: 2

Compression:

Stored size: 1.53 KB

Contents

require 'active_support/concern'

module Canmoia
  module Order
    extend ActiveSupport::Concern

    included do
      include ::Workflow
      include CalculationMethods
      # extend  Notification

      # Fields
      field :total, type: Float
      field :state, type: Symbol

      # Relations
      embeds_many :items
      has_one :client, :class_name => "::User"

      # States
      workflow_column :state
      workflow do

        state :opened do
          event :close , transitions_to: :reviewing
          event :cancel, transitions_to: :canceled
        end

        state :reviewing do
          event :accept, transitions_to: :accepted
          event :reject, transitions_to: :rejected

          event :cancel, transitions_to: :canceled
        end

        state :accepted do
          event :complete, transitions_to: :completed
          event :cancel  , transitions_to: :canceled
        end

        state :rejected do
          event :complete, transitions_to: :completed
          event :cancel  , transitions_to: :canceled
        end

        state :completed
        state :canceled
      end
    end

    module CalculationMethods
      def total
        @total ||= super or items.sum(&:value)
      end
    end

    # - on :open   , close: :reviewing, cancel: :canceled, notify: :responsible
    # V on :review, reject: :rejected, accept: :accepted
    # - on :accept, notify: :buyer
    # - on :reject, notify: :buyer
    # - on :cancel, notify: [:buyer, via: :email] }
    # - on :finish, notify: [:buyer, via: :email] }

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
canmoia-0.0.2 lib/canmoia/concerns/order.rb~
canmoia-0.0.1 lib/canmoia/concerns/order.rb~