mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-21 15:54:22 +01:00
stave start date in subscription schedule
This commit is contained in:
parent
d0eebddcee
commit
1a672b0644
@ -18,7 +18,6 @@ Metrics/BlockLength:
|
|||||||
- 'app/pdfs/pdf/*.rb'
|
- 'app/pdfs/pdf/*.rb'
|
||||||
- 'test/**/*.rb'
|
- 'test/**/*.rb'
|
||||||
Metrics/ParameterLists:
|
Metrics/ParameterLists:
|
||||||
Max: 6
|
|
||||||
CountKeywordArgs: false
|
CountKeywordArgs: false
|
||||||
Style/BracesAroundHashParameters:
|
Style/BracesAroundHashParameters:
|
||||||
EnforcedStyle: context_dependent
|
EnforcedStyle: context_dependent
|
||||||
|
@ -47,6 +47,7 @@ class PaymentScheduleService
|
|||||||
details: details
|
details: details
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
ps.start_at = start_at
|
||||||
ps.total = items.map(&:amount).reduce(:+)
|
ps.total = items.map(&:amount).reduce(:+)
|
||||||
ps.invoicing_profile = customer.invoicing_profile
|
ps.invoicing_profile = customer.invoicing_profile
|
||||||
ps.statistic_profile = customer.statistic_profile
|
ps.statistic_profile = customer.statistic_profile
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# From this migration, we allow PaymentSchedules to start later, previously the started
|
||||||
|
# as soon as they were created.
|
||||||
|
class AddStartAtToPaymentSchedule < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :payment_schedules, :start_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
21
db/schema.rb
21
db/schema.rb
@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
ActiveRecord::Schema.define(version: 2021_10_18_121822) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "fuzzystrmatch"
|
enable_extension "fuzzystrmatch"
|
||||||
@ -19,8 +19,8 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
enable_extension "unaccent"
|
enable_extension "unaccent"
|
||||||
|
|
||||||
create_table "abuses", id: :serial, force: :cascade do |t|
|
create_table "abuses", id: :serial, force: :cascade do |t|
|
||||||
t.string "signaled_type"
|
|
||||||
t.integer "signaled_id"
|
t.integer "signaled_id"
|
||||||
|
t.string "signaled_type"
|
||||||
t.string "first_name"
|
t.string "first_name"
|
||||||
t.string "last_name"
|
t.string "last_name"
|
||||||
t.string "email"
|
t.string "email"
|
||||||
@ -49,8 +49,8 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
t.string "locality"
|
t.string "locality"
|
||||||
t.string "country"
|
t.string "country"
|
||||||
t.string "postal_code"
|
t.string "postal_code"
|
||||||
t.string "placeable_type"
|
|
||||||
t.integer "placeable_id"
|
t.integer "placeable_id"
|
||||||
|
t.string "placeable_type"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -64,8 +64,8 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
end
|
end
|
||||||
|
|
||||||
create_table "assets", id: :serial, force: :cascade do |t|
|
create_table "assets", id: :serial, force: :cascade do |t|
|
||||||
t.string "viewable_type"
|
|
||||||
t.integer "viewable_id"
|
t.integer "viewable_id"
|
||||||
|
t.string "viewable_type"
|
||||||
t.string "attachment"
|
t.string "attachment"
|
||||||
t.string "type"
|
t.string "type"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
@ -133,8 +133,8 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
end
|
end
|
||||||
|
|
||||||
create_table "credits", id: :serial, force: :cascade do |t|
|
create_table "credits", id: :serial, force: :cascade do |t|
|
||||||
t.string "creditable_type"
|
|
||||||
t.integer "creditable_id"
|
t.integer "creditable_id"
|
||||||
|
t.string "creditable_type"
|
||||||
t.integer "plan_id"
|
t.integer "plan_id"
|
||||||
t.integer "hours"
|
t.integer "hours"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
@ -356,15 +356,15 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
|
|
||||||
create_table "notifications", id: :serial, force: :cascade do |t|
|
create_table "notifications", id: :serial, force: :cascade do |t|
|
||||||
t.integer "receiver_id"
|
t.integer "receiver_id"
|
||||||
t.string "attached_object_type"
|
|
||||||
t.integer "attached_object_id"
|
t.integer "attached_object_id"
|
||||||
|
t.string "attached_object_type"
|
||||||
t.integer "notification_type_id"
|
t.integer "notification_type_id"
|
||||||
t.boolean "is_read", default: false
|
t.boolean "is_read", default: false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "receiver_type"
|
t.string "receiver_type"
|
||||||
t.boolean "is_send", default: false
|
t.boolean "is_send", default: false
|
||||||
t.jsonb "meta_data", default: "{}"
|
t.jsonb "meta_data", default: {}
|
||||||
t.index ["notification_type_id"], name: "index_notifications_on_notification_type_id"
|
t.index ["notification_type_id"], name: "index_notifications_on_notification_type_id"
|
||||||
t.index ["receiver_id"], name: "index_notifications_on_receiver_id"
|
t.index ["receiver_id"], name: "index_notifications_on_receiver_id"
|
||||||
end
|
end
|
||||||
@ -479,6 +479,7 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
t.bigint "operator_profile_id"
|
t.bigint "operator_profile_id"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.datetime "start_at"
|
||||||
t.index ["coupon_id"], name: "index_payment_schedules_on_coupon_id"
|
t.index ["coupon_id"], name: "index_payment_schedules_on_coupon_id"
|
||||||
t.index ["invoicing_profile_id"], name: "index_payment_schedules_on_invoicing_profile_id"
|
t.index ["invoicing_profile_id"], name: "index_payment_schedules_on_invoicing_profile_id"
|
||||||
t.index ["operator_profile_id"], name: "index_payment_schedules_on_operator_profile_id"
|
t.index ["operator_profile_id"], name: "index_payment_schedules_on_operator_profile_id"
|
||||||
@ -548,8 +549,8 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
create_table "prices", id: :serial, force: :cascade do |t|
|
create_table "prices", id: :serial, force: :cascade do |t|
|
||||||
t.integer "group_id"
|
t.integer "group_id"
|
||||||
t.integer "plan_id"
|
t.integer "plan_id"
|
||||||
t.string "priceable_type"
|
|
||||||
t.integer "priceable_id"
|
t.integer "priceable_id"
|
||||||
|
t.string "priceable_type"
|
||||||
t.integer "amount"
|
t.integer "amount"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
@ -658,8 +659,8 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
t.text "message"
|
t.text "message"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "reservable_type"
|
|
||||||
t.integer "reservable_id"
|
t.integer "reservable_id"
|
||||||
|
t.string "reservable_type"
|
||||||
t.integer "nb_reserve_places"
|
t.integer "nb_reserve_places"
|
||||||
t.integer "statistic_profile_id"
|
t.integer "statistic_profile_id"
|
||||||
t.index ["reservable_type", "reservable_id"], name: "index_reservations_on_reservable_type_and_reservable_id"
|
t.index ["reservable_type", "reservable_id"], name: "index_reservations_on_reservable_type_and_reservable_id"
|
||||||
@ -668,8 +669,8 @@ ActiveRecord::Schema.define(version: 2021_10_14_135151) do
|
|||||||
|
|
||||||
create_table "roles", id: :serial, force: :cascade do |t|
|
create_table "roles", id: :serial, force: :cascade do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "resource_type"
|
|
||||||
t.integer "resource_id"
|
t.integer "resource_id"
|
||||||
|
t.string "resource_type"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.index ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
|
t.index ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
|
||||||
|
@ -28,7 +28,7 @@ class Stripe::Service < Payment::Service
|
|||||||
# other items (not recurring)
|
# other items (not recurring)
|
||||||
items = subscription_invoice_items(payment_schedule, subscription, first_item, reservable_stp_id)
|
items = subscription_invoice_items(payment_schedule, subscription, first_item, reservable_stp_id)
|
||||||
|
|
||||||
create_remote_subscription(shopping_cart, payment_schedule, items, price, payment_method_id, subscription)
|
create_remote_subscription(shopping_cart, payment_schedule, items, price, payment_method_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_subscription(payment_schedule, stp_object_id, stp_object_type)
|
def create_subscription(payment_schedule, stp_object_id, stp_object_type)
|
||||||
@ -154,9 +154,9 @@ class Stripe::Service < Payment::Service
|
|||||||
|
|
||||||
|
|
||||||
# Create the provided PaymentSchedule on Stripe, using the Subscription API
|
# Create the provided PaymentSchedule on Stripe, using the Subscription API
|
||||||
def create_remote_subscription(shopping_cart, payment_schedule, items, price, payment_method_id, subscription)
|
def create_remote_subscription(shopping_cart, payment_schedule, items, price, payment_method_id)
|
||||||
stripe_key = Setting.get('stripe_secret_key')
|
stripe_key = Setting.get('stripe_secret_key')
|
||||||
if subscription.start_at.nil?
|
if payment_schedule.start_at.nil?
|
||||||
Stripe::Subscription.create({
|
Stripe::Subscription.create({
|
||||||
customer: shopping_cart.customer.payment_gateway_object.gateway_object_id,
|
customer: shopping_cart.customer.payment_gateway_object.gateway_object_id,
|
||||||
cancel_at: (payment_schedule.payment_schedule_items.max_by(&:due_date).due_date + 1.month).to_i,
|
cancel_at: (payment_schedule.payment_schedule_items.max_by(&:due_date).due_date + 1.month).to_i,
|
||||||
@ -171,7 +171,7 @@ class Stripe::Service < Payment::Service
|
|||||||
else
|
else
|
||||||
Stripe::SubscriptionSchedule.create({
|
Stripe::SubscriptionSchedule.create({
|
||||||
customer: shopping_cart.customer.payment_gateway_object.gateway_object_id,
|
customer: shopping_cart.customer.payment_gateway_object.gateway_object_id,
|
||||||
start_date: subscription.start_at.to_i,
|
start_date: payment_schedule.start_at.to_i,
|
||||||
end_behavior: 'cancel',
|
end_behavior: 'cancel',
|
||||||
phases: [
|
phases: [
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user