Sha256: 7b3217e4994ecfd18fff1e5cbbfce9391cc364d772e5b7e6413bfd6ac74721cc
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
require 'active_support/concern' module Canmoia module Order extend ActiveSupport::Concern included do include ::Workflow include CalculationMethods # extend Notification # Fields # TODO move to Canmoia::Purchase field :state, type: Symbol field :total, type: Float # Relations embeds_many :items # TODO move to Canmoia::Purchase has_one :client, :class_name => "::User" # Domain Callbacks before_validation :calculate_total, :if => :opened? # 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 calculate_total self.total = 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
canmoia-0.0.1 | lib/canmoia/concerns/order.rb |