effective_orders 6.18.4 → 6.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/admin/item_names_controller.rb +13 -0
- data/app/datatables/admin/effective_item_names_datatable.rb +22 -0
- data/app/helpers/effective_acts_as_purchasable_helper.rb +25 -0
- data/app/helpers/effective_orders_helper.rb +0 -5
- data/app/models/effective/item_name.rb +28 -0
- data/app/models/effective/order.rb +1 -1
- data/app/models/effective/order_item.rb +1 -1
- data/app/views/admin/item_names/_form.html.haml +7 -0
- data/app/views/admin/item_names/_form_item_name.html.haml +4 -0
- data/app/views/admin/orders/_order_item_fields.html.haml +2 -2
- data/app/views/effective/acts_as_purchasable/_fields.html.haml +3 -0
- data/app/views/effective/orders/deferred.html.haml +20 -3
- data/config/routes.rb +3 -0
- data/db/migrate/101_create_effective_orders.rb +10 -0
- data/lib/effective_orders/version.rb +1 -1
- data/lib/effective_orders.rb +5 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe4877e8b611ca4cf5aae18c2f43d0e62a6dc333e76634c74d098efe952199b6
|
4
|
+
data.tar.gz: 7fdb4b4fda03ea47a941a032ee320fff2a6f432fd452e596bb2cfae40ed04569
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35d1d862fc154790c9e03ab1e01cd679340ae2c6da181cb26c6206fbaa6d6e3d1788e2b98516ba204e4e575ad98b12331ce81db0c41f5883fab3ca6ce99d1c70
|
7
|
+
data.tar.gz: 468b756bce436cacd7e9132d126edff379f61991dc984cc1ac140dec93750459caa379aedd184c9c5f846770d2566ecf16639c0f2980baa7557acf8746e72c63
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Admin
|
2
|
+
class ItemNamesController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
before_action { EffectiveResources.authorize!(self, :admin, :effective_orders) }
|
5
|
+
|
6
|
+
include Effective::CrudController
|
7
|
+
|
8
|
+
if (config = EffectiveOrders.layout)
|
9
|
+
layout(config.kind_of?(Hash) ? config[:admin] : config)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Admin
|
2
|
+
class EffectiveItemNamesDatatable < Effective::Datatable
|
3
|
+
filters do
|
4
|
+
scope :unarchived, label: 'All'
|
5
|
+
scope :archived
|
6
|
+
end
|
7
|
+
|
8
|
+
datatable do
|
9
|
+
order :name
|
10
|
+
|
11
|
+
col :id, visible: false
|
12
|
+
col :name
|
13
|
+
col :archived, visible: false
|
14
|
+
|
15
|
+
actions_col
|
16
|
+
end
|
17
|
+
|
18
|
+
collection do
|
19
|
+
Effective::ItemName.all
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module EffectiveActsAsPurchasableHelper
|
2
|
+
def acts_as_purchasable_fields(form, options = {})
|
3
|
+
raise 'expected a form builder' unless form.respond_to?(:object)
|
4
|
+
render('effective/acts_as_purchasable/fields', { form: form }.merge(options))
|
5
|
+
end
|
6
|
+
|
7
|
+
def qb_item_name_field(form, options = {})
|
8
|
+
raise 'expected a form builder' unless form.respond_to?(:object)
|
9
|
+
raise 'expected an object that responds to qb_item_name' unless form.object.respond_to?(:qb_item_name)
|
10
|
+
|
11
|
+
collection = Effective::ItemName.unarchived.or(Effective::ItemName.where(name: form.object.qb_item_name.to_s)).sorted.pluck(:name)
|
12
|
+
|
13
|
+
options = options.reverse_merge(
|
14
|
+
label: (EffectiveOrders.quickbooks? ? "Quickbooks #{etd(Effective::ItemName)}" : et(Effective::ItemName)),
|
15
|
+
hint: "Can't find the #{etd(Effective::ItemName)} you need? #{link_to('Click here to add one', effective_orders.admin_item_names_path, target: '_blank')}"
|
16
|
+
)
|
17
|
+
|
18
|
+
form.select :qb_item_name, collection, options
|
19
|
+
end
|
20
|
+
|
21
|
+
# This is called on the My Sales Page and is intended to be overridden in the app if needed
|
22
|
+
def acts_as_purchasable_path(purchasable, action = :show)
|
23
|
+
polymorphic_path(purchasable)
|
24
|
+
end
|
25
|
+
end
|
@@ -71,11 +71,6 @@ module EffectiveOrdersHelper
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
# This is called on the My Sales Page and is intended to be overridden in the app if needed
|
75
|
-
def acts_as_purchasable_path(purchasable, action = :show)
|
76
|
-
polymorphic_path(purchasable)
|
77
|
-
end
|
78
|
-
|
79
74
|
def order_payment_to_html(order)
|
80
75
|
content_tag(:pre) do
|
81
76
|
raw JSON.pretty_generate(order.payment).html_safe.gsub('\"', '').gsub("[\n\n ]", '[]').gsub("{\n }", '{}')
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# This is a CRUD model to populate the select field to choose qb_item_name on acts_as_purchasable objects.
|
4
|
+
|
5
|
+
module Effective
|
6
|
+
class ItemName < ActiveRecord::Base
|
7
|
+
self.table_name = (EffectiveOrders.item_names_table_name || :item_names).to_s
|
8
|
+
|
9
|
+
acts_as_archived
|
10
|
+
log_changes if respond_to?(:log_changes)
|
11
|
+
|
12
|
+
effective_resource do
|
13
|
+
name :string
|
14
|
+
archived :boolean
|
15
|
+
|
16
|
+
timestamps
|
17
|
+
end
|
18
|
+
|
19
|
+
scope :sorted, -> { order(:name) }
|
20
|
+
|
21
|
+
validates :name, uniqueness: true, presence: true
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
name.presence || model_name.human
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -810,7 +810,7 @@ module Effective
|
|
810
810
|
|
811
811
|
# Went from delayed to cheque
|
812
812
|
if delayed_payment? && !delayed_payment_provider?
|
813
|
-
assign_attributes(
|
813
|
+
assign_attributes(delayed_payment_intent: nil, delayed_payment_total: nil)
|
814
814
|
end
|
815
815
|
|
816
816
|
if current_user&.email.present?
|
@@ -90,7 +90,7 @@ module Effective
|
|
90
90
|
# first or build
|
91
91
|
def qb_item_name
|
92
92
|
raise('expected Effective Quickbooks gem') unless defined?(EffectiveQbSync) || defined?(EffectiveQbOnline)
|
93
|
-
(qb_order_item || build_qb_order_item(name: purchasable
|
93
|
+
(qb_order_item || build_qb_order_item(name: purchasable.try(:qb_item_name))).name
|
94
94
|
end
|
95
95
|
|
96
96
|
end
|
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
.col= pf.price_field :price
|
15
15
|
|
16
|
-
|
17
|
-
.
|
16
|
+
.col
|
17
|
+
.mt-4= qb_item_name_field(pf)
|
18
18
|
|
19
19
|
.col= pf.check_box :tax_exempt, label: "Tax Exempt", title: 'When checked, tax will not be applied to this item'
|
@@ -2,9 +2,26 @@
|
|
2
2
|
%h1.effective-heading= @page_title
|
3
3
|
|
4
4
|
%p.effective-orders-page-content
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
- if @order.delayed? && @order.deferred? && @order.delayed_payment_provider?
|
6
|
+
%p
|
7
|
+
= succeed('.') do
|
8
|
+
- distance = distance_of_time_in_words(Time.zone.now, @order.delayed_payment_date.beginning_of_day)
|
9
|
+
|
10
|
+
The payment date for this order
|
11
|
+
|
12
|
+
- if @order.delayed_payment_date_upcoming?
|
13
|
+
is in #{distance} from now on #{@order.delayed_payment_date.strftime('%F')}
|
14
|
+
- elsif @order.delayed_payment_date_today?
|
15
|
+
was today
|
16
|
+
- else
|
17
|
+
was #{distance} ago on #{@order.delayed_payment_date.strftime('%F')}
|
18
|
+
|
19
|
+
%p Your existing #{@order.delayed_payment_method} will be charged on the payment date.
|
20
|
+
|
21
|
+
- elsif @order.deferred?
|
22
|
+
You have indicated that this order will be paid by #{@order.payment_provider}.
|
23
|
+
Your order will not be considered purchased until we receive your payment.
|
24
|
+
Please contact us at your earliest convenience.
|
8
25
|
|
9
26
|
= render @order
|
10
27
|
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
EffectiveOrders::Engine.routes.draw do
|
2
|
+
acts_as_archived
|
3
|
+
|
2
4
|
scope module: 'effective' do
|
3
5
|
resources :orders, except: [:destroy] do
|
4
6
|
member do
|
@@ -49,6 +51,7 @@ EffectiveOrders::Engine.routes.draw do
|
|
49
51
|
|
50
52
|
namespace :admin do
|
51
53
|
resources :customers, only: [:index, :show]
|
54
|
+
resources :item_names, except: [:show, :destroy], concerns: :acts_as_archived
|
52
55
|
|
53
56
|
resources :orders do
|
54
57
|
member do
|
@@ -110,6 +110,16 @@ class CreateEffectiveOrders < ActiveRecord::Migration[6.0]
|
|
110
110
|
|
111
111
|
add_index :customers, :user_id
|
112
112
|
|
113
|
+
create_table :item_names do |t|
|
114
|
+
t.string :name
|
115
|
+
t.boolean :archived, default: false
|
116
|
+
|
117
|
+
t.datetime :updated_at
|
118
|
+
t.datetime :created_at
|
119
|
+
end
|
120
|
+
|
121
|
+
add_index :item_names, [:name, :archived]
|
122
|
+
|
113
123
|
create_table :subscriptions do |t|
|
114
124
|
t.integer :customer_id
|
115
125
|
|
data/lib/effective_orders.rb
CHANGED
@@ -16,7 +16,7 @@ module EffectiveOrders
|
|
16
16
|
def self.config_keys
|
17
17
|
[
|
18
18
|
:orders_table_name, :order_items_table_name, :carts_table_name, :cart_items_table_name,
|
19
|
-
:customers_table_name, :subscriptions_table_name, :products_table_name,
|
19
|
+
:customers_table_name, :subscriptions_table_name, :products_table_name, :item_names_table_name,
|
20
20
|
:layout,
|
21
21
|
:orders_collection_scope, :order_tax_rate_method,
|
22
22
|
:obfuscate_order_ids, :use_effective_qb_sync, :use_effective_qb_online,
|
@@ -212,6 +212,10 @@ module EffectiveOrders
|
|
212
212
|
use_effective_qb_online && defined?(EffectiveQbOnline)
|
213
213
|
end
|
214
214
|
|
215
|
+
def self.quickbooks?
|
216
|
+
use_effective_qb_sync || use_effective_qb_online
|
217
|
+
end
|
218
|
+
|
215
219
|
def self.surcharge?
|
216
220
|
credit_card_surcharge_percent.to_f > 0.0
|
217
221
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_orders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.19.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -202,6 +202,7 @@ files:
|
|
202
202
|
- app/assets/stylesheets/effective_orders/_cart.scss
|
203
203
|
- app/assets/stylesheets/effective_orders/_order.scss
|
204
204
|
- app/controllers/admin/customers_controller.rb
|
205
|
+
- app/controllers/admin/item_names_controller.rb
|
205
206
|
- app/controllers/admin/order_items_controller.rb
|
206
207
|
- app/controllers/admin/order_reports_controller.rb
|
207
208
|
- app/controllers/admin/orders_controller.rb
|
@@ -226,12 +227,14 @@ files:
|
|
226
227
|
- app/controllers/effective/subscripter_controller.rb
|
227
228
|
- app/controllers/effective/webhooks_controller.rb
|
228
229
|
- app/datatables/admin/effective_customers_datatable.rb
|
230
|
+
- app/datatables/admin/effective_item_names_datatable.rb
|
229
231
|
- app/datatables/admin/effective_orders_datatable.rb
|
230
232
|
- app/datatables/admin/report_payment_providers_datatable.rb
|
231
233
|
- app/datatables/admin/report_transactions_datatable.rb
|
232
234
|
- app/datatables/admin/report_transactions_grouped_by_name_datatable.rb
|
233
235
|
- app/datatables/admin/report_transactions_grouped_by_qb_name_datatable.rb
|
234
236
|
- app/datatables/effective_orders_datatable.rb
|
237
|
+
- app/helpers/effective_acts_as_purchasable_helper.rb
|
235
238
|
- app/helpers/effective_carts_helper.rb
|
236
239
|
- app/helpers/effective_deluxe_delayed_helper.rb
|
237
240
|
- app/helpers/effective_deluxe_helper.rb
|
@@ -249,6 +252,7 @@ files:
|
|
249
252
|
- app/models/effective/cart_item.rb
|
250
253
|
- app/models/effective/customer.rb
|
251
254
|
- app/models/effective/deluxe_api.rb
|
255
|
+
- app/models/effective/item_name.rb
|
252
256
|
- app/models/effective/order.rb
|
253
257
|
- app/models/effective/order_item.rb
|
254
258
|
- app/models/effective/product.rb
|
@@ -259,6 +263,8 @@ files:
|
|
259
263
|
- app/views/admin/customers/_actions.html.haml
|
260
264
|
- app/views/admin/customers/index.html.haml
|
261
265
|
- app/views/admin/customers/show.html.haml
|
266
|
+
- app/views/admin/item_names/_form.html.haml
|
267
|
+
- app/views/admin/item_names/_form_item_name.html.haml
|
262
268
|
- app/views/admin/order_items/index.html.haml
|
263
269
|
- app/views/admin/order_reports/index.html.haml
|
264
270
|
- app/views/admin/orders/_form.html.haml
|
@@ -269,6 +275,7 @@ files:
|
|
269
275
|
- app/views/admin/orders/_order_actions.html.haml
|
270
276
|
- app/views/admin/orders/_order_item_fields.html.haml
|
271
277
|
- app/views/admin/orders/checkout.html.haml
|
278
|
+
- app/views/effective/acts_as_purchasable/_fields.html.haml
|
272
279
|
- app/views/effective/carts/_cart.html.haml
|
273
280
|
- app/views/effective/carts/_cart_actions.html.haml
|
274
281
|
- app/views/effective/carts/show.html.haml
|