├── .rspec
├── app
├── assets
│ ├── javascripts
│ │ ├── spree
│ │ │ ├── backend
│ │ │ │ └── solidus_papertrail.js
│ │ │ └── frontend
│ │ │ │ └── solidus_papertrail.js
│ │ ├── admin
│ │ │ └── solidus_papertrail.js
│ │ └── store
│ │ │ └── solidus_papertrail.js
│ └── stylesheets
│ │ ├── spree
│ │ ├── backend
│ │ │ └── solidus_papertrail.css
│ │ └── frontend
│ │ │ └── solidus_papertrail.css
│ │ ├── admin
│ │ └── solidus_papertrail.css
│ │ └── store
│ │ └── solidus_papertrail.css
├── models
│ ├── spree
│ │ ├── order_version.rb
│ │ ├── payment_version.rb
│ │ ├── shipment_version.rb
│ │ ├── line_item_version.rb
│ │ ├── adjustment_version.rb
│ │ ├── order_decorator.rb
│ │ ├── payment_decorator.rb
│ │ ├── shipment_decorator.rb
│ │ ├── line_item_decorator.rb
│ │ ├── return_authorization_version.rb
│ │ ├── adjustment_decorator.rb
│ │ └── return_authorization_decorator.rb
│ ├── paper_trail
│ │ └── version_decorator.rb
│ └── concerns
│ │ └── spree
│ │ └── versionable.rb
├── controllers
│ └── spree
│ │ ├── base_controller_decorator.rb
│ │ ├── api
│ │ └── base_controller_decorator.rb
│ │ └── admin
│ │ └── orders_controller_decorator.rb
├── overrides
│ └── add_order_history_to_order_menu.rb
├── services
│ ├── yaml_adapter.rb
│ └── versions_adapter.rb
└── views
│ └── spree
│ └── admin
│ └── orders
│ ├── versions.html.erb
│ ├── _object_changes.html.erb
│ ├── _order_versions.html.erb
│ ├── _adjustment_versions.html.erb
│ ├── _line_item_versions.html.erb
│ ├── _payment_versions.html.erb
│ ├── _shipment_versions.html.erb
│ └── _return_authorization_versions.html.erb
├── .rubocop.yml
├── lib
├── solidus_papertrail
│ ├── factories.rb
│ ├── version.rb
│ └── engine.rb
├── solidus_papertrail.rb
└── generators
│ └── solidus_papertrail
│ └── install
│ └── install_generator.rb
├── config
├── initializers
│ └── paper_trail.rb
├── locales
│ ├── es.yml
│ └── en.yml
└── routes.rb
├── .gem_release.yml
├── Rakefile
├── bin
├── setup
├── rails
└── console
├── .gitignore
├── spec
├── controllers
│ └── spree
│ │ ├── admin
│ │ └── base_controller_spec.rb
│ │ └── api
│ │ └── base_controller_spec.rb
├── support
│ └── authentication_helpers.rb
├── spec_helper.rb
└── features
│ └── admin
│ └── order_history_spec.rb
├── .github
└── stale.yml
├── .circleci
└── config.yml
├── README.md
├── Gemfile
├── solidus_papertrail.gemspec
├── LICENSE
├── db
└── migrate
│ └── 20160421221937_create_versions.rb
└── .rubocop_todo.yml
/.rspec:
--------------------------------------------------------------------------------
1 | --color
2 | --require spec_helper
3 |
--------------------------------------------------------------------------------
/app/assets/javascripts/spree/backend/solidus_papertrail.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/assets/javascripts/spree/frontend/solidus_papertrail.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/spree/backend/solidus_papertrail.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/spree/frontend/solidus_papertrail.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/assets/javascripts/admin/solidus_papertrail.js:
--------------------------------------------------------------------------------
1 | //= require admin/spree_backend
2 |
--------------------------------------------------------------------------------
/app/assets/javascripts/store/solidus_papertrail.js:
--------------------------------------------------------------------------------
1 | //= require store/spree_frontend
2 |
--------------------------------------------------------------------------------
/.rubocop.yml:
--------------------------------------------------------------------------------
1 | require:
2 | - solidus_dev_support/rubocop
3 |
4 | inherit_from: .rubocop_todo.yml
5 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/admin/solidus_papertrail.css:
--------------------------------------------------------------------------------
1 | /*
2 | *= require admin/spree_backend
3 | */
4 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/store/solidus_papertrail.css:
--------------------------------------------------------------------------------
1 | /*
2 | *= require store/spree_frontend
3 | */
4 |
--------------------------------------------------------------------------------
/lib/solidus_papertrail/factories.rb:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | FactoryBot.define do
4 | end
5 |
--------------------------------------------------------------------------------
/config/initializers/paper_trail.rb:
--------------------------------------------------------------------------------
1 | PaperTrail.config.enabled = true
2 | PaperTrail.config.track_associations = false
3 |
--------------------------------------------------------------------------------
/lib/solidus_papertrail/version.rb:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | module SolidusPapertrail
4 | VERSION = '1.0.0'
5 | end
6 |
--------------------------------------------------------------------------------
/.gem_release.yml:
--------------------------------------------------------------------------------
1 | bump:
2 | recurse: false
3 | file: 'lib/solidus_papertrail/version.rb'
4 | message: Bump SolidusPapertrail to %{version}
5 | tag: true
6 |
--------------------------------------------------------------------------------
/app/models/spree/order_version.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | class OrderVersion < PaperTrail::Version
3 | self.table_name = :spree_order_versions
4 | end
5 | end
--------------------------------------------------------------------------------
/app/models/spree/payment_version.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | class PaymentVersion < PaperTrail::Version
3 | self.table_name = :spree_payment_versions
4 | end
5 | end
--------------------------------------------------------------------------------
/app/models/spree/shipment_version.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | class ShipmentVersion < PaperTrail::Version
3 | self.table_name = :spree_shipment_versions
4 | end
5 | end
--------------------------------------------------------------------------------
/app/models/spree/line_item_version.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | class LineItemVersion < PaperTrail::Version
3 | self.table_name = :spree_line_item_versions
4 | end
5 | end
--------------------------------------------------------------------------------
/config/locales/es.yml:
--------------------------------------------------------------------------------
1 | es:
2 | spree:
3 | payment_history: Historial de Pago
4 | order_history: Historial de la Orden
5 | shipment_history: Historial del Envío
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | require 'solidus_dev_support/rake_tasks'
4 | SolidusDevSupport::RakeTasks.install
5 |
6 | task default: 'extension:specs'
7 |
--------------------------------------------------------------------------------
/app/models/spree/adjustment_version.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | class AdjustmentVersion < PaperTrail::Version
3 | self.table_name = :spree_adjustment_versions
4 | end
5 | end
--------------------------------------------------------------------------------
/bin/setup:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 | IFS=$'\n\t'
4 | set -vx
5 |
6 | gem install bundler --conservative
7 | bundle update
8 | bundle exec rake clobber
9 |
--------------------------------------------------------------------------------
/app/models/paper_trail/version_decorator.rb:
--------------------------------------------------------------------------------
1 | module PaperTrail
2 | module VersionDecorator
3 | Version.class_eval do
4 | self.abstract_class = true
5 | end
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/app/models/spree/order_decorator.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | Order.class_eval do
3 | include Spree::Versionable
4 | has_paper_trail class_name: 'Spree::OrderVersion'
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/spree/payment_decorator.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | Payment.class_eval do
3 | include Spree::Versionable
4 | has_paper_trail class_name: 'Spree::PaymentVersion'
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/spree/shipment_decorator.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | Shipment.class_eval do
3 | include Spree::Versionable
4 | has_paper_trail class_name: 'Spree::ShipmentVersion'
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/spree/line_item_decorator.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | LineItem.class_eval do
3 | include Spree::Versionable
4 | has_paper_trail class_name: 'Spree::LineItemVersion'
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/spree/return_authorization_version.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | class ReturnAuthorizationVersion < PaperTrail::Version
3 | self.table_name = :spree_return_authorization_versions
4 | end
5 | end
--------------------------------------------------------------------------------
/app/models/spree/adjustment_decorator.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | Adjustment.class_eval do
3 | include Spree::Versionable
4 | has_paper_trail class_name: 'Spree::AdjustmentVersion'
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/controllers/spree/base_controller_decorator.rb:
--------------------------------------------------------------------------------
1 | Spree::BaseController.class_eval do
2 | def user_for_paper_trail
3 | current_spree_user.nil? ? 'Public User' : current_spree_user.id
4 | end
5 | end
6 |
--------------------------------------------------------------------------------
/app/controllers/spree/api/base_controller_decorator.rb:
--------------------------------------------------------------------------------
1 | Spree::Api::BaseController.class_eval do
2 | def user_for_paper_trail
3 | current_api_user.nil? ? 'Public User' : current_api_user.id
4 | end
5 | end
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.gem
2 | \#*
3 | *~
4 | .#*
5 | .DS_Store
6 | .idea
7 | .project
8 | .sass-cache
9 | coverage
10 | Gemfile.lock
11 | tmp
12 | nbproject
13 | pkg
14 | *.swp
15 | spec/dummy
16 | spec/examples.txt
17 |
--------------------------------------------------------------------------------
/app/models/spree/return_authorization_decorator.rb:
--------------------------------------------------------------------------------
1 | module Spree
2 | ReturnAuthorization.class_eval do
3 | include Spree::Versionable
4 | has_paper_trail class_name: 'Spree::ReturnAuthorizationVersion'
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/lib/solidus_papertrail.rb:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | require 'solidus_core'
4 | require 'solidus_support'
5 |
6 | require 'solidus_papertrail/version'
7 | require 'solidus_papertrail/engine'
8 |
9 | require 'paper_trail'
10 |
--------------------------------------------------------------------------------
/config/routes.rb:
--------------------------------------------------------------------------------
1 | Spree::Core::Engine.routes.draw do
2 | # Add your extension routes here
3 | namespace :admin do
4 | resources :orders do
5 | member do
6 | get :versions
7 | end
8 | end
9 | end
10 |
11 | end
12 |
--------------------------------------------------------------------------------
/bin/rails:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | # frozen_string_literal: true
4 |
5 | app_root = 'spec/dummy'
6 |
7 | unless File.exist? "#{app_root}/bin/rails"
8 | system "bin/rake", app_root or begin # rubocop:disable Style/AndOr
9 | warn "Automatic creation of the dummy app failed"
10 | exit 1
11 | end
12 | end
13 |
14 | Dir.chdir app_root
15 | exec 'bin/rails', *ARGV
16 |
--------------------------------------------------------------------------------
/app/overrides/add_order_history_to_order_menu.rb:
--------------------------------------------------------------------------------
1 | Deface::Override.new(
2 | virtual_path: 'spree/admin/shared/_order_submenu',
3 | name: 'order_history_menu',
4 | insert_bottom: "[data-hook='admin_order_tabs']",
5 | text: "
8 |
9 |
10 | | <%= Spree::PaymentVersion.human_attribute_name("version_id") %> |
11 | <%= Spree::PaymentVersion.human_attribute_name("id") %> |
12 | <%= Spree::PaymentVersion.human_attribute_name("amount") %> |
13 | <%= Spree::PaymentVersion.human_attribute_name("payment_state") %> |
14 | <%= Spree::PaymentVersion.human_attribute_name("payment_method") %> |
15 | <%= Spree::PaymentVersion.human_attribute_name("event") %> |
16 | <%= Spree::PaymentVersion.human_attribute_name("changes") %> |
17 | <%= Spree::PaymentVersion.human_attribute_name("user") %> |
18 | <%= Spree::PaymentVersion.human_attribute_name("created") %> |
19 |
20 |
21 |
22 |
23 | <% @payment_versions.each do |payment| %>
24 | <% if payment.version_id %>
25 |
26 | | <%= payment.version_id %> |
27 | <%= payment.id %> |
28 | <%= number_to_currency payment.amount %> |
29 | <%= payment.state if payment.id %> |
30 | <%= payment_method_name(payment) if payment.id %> |
31 | <%= payment.version_event %> |
32 | <%= render partial: 'object_changes', locals: { object: payment } %> |
33 | <%= payment.who %> |
34 | <%= pretty_time(payment.version_date) %> |
35 |
36 | <% else %>
37 | |
38 | <%= payment.id %> |
39 | <%= number_to_currency payment.amount %> |
40 | <%= payment.state if payment.id %> |
41 | <%= payment.payment_method.name if payment.id %> |
42 | |
43 | |
44 | |
45 | <%= pretty_time(payment.updated_at) %> |
46 | <% end %>
47 | <% end %>
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/app/views/spree/admin/orders/_shipment_versions.html.erb:
--------------------------------------------------------------------------------
1 |