diff --git a/app/assets/templates/admin/invoices/avoirModal.html.erb b/app/assets/templates/admin/invoices/avoirModal.html.erb index a8e24049c..08f9cd531 100644 --- a/app/assets/templates/admin/invoices/avoirModal.html.erb +++ b/app/assets/templates/admin/invoices/avoirModal.html.erb @@ -23,7 +23,7 @@
- +
diff --git a/app/controllers/api/invoices_controller.rb b/app/controllers/api/invoices_controller.rb index 84a18a5e0..7ffbb56f5 100644 --- a/app/controllers/api/invoices_controller.rb +++ b/app/controllers/api/invoices_controller.rb @@ -60,7 +60,7 @@ class API::InvoicesController < API::ApiController private def avoir_params - params.require(:avoir).permit(:invoice_id, :avoir_date, :avoir_mode, :subscription_to_expire, :description, + params.require(:avoir).permit(:invoice_id, :avoir_date, :payment_method, :subscription_to_expire, :description, invoice_items_ids: []) end diff --git a/app/models/avoir.rb b/app/models/avoir.rb index 0621b2350..b0ced9428 100644 --- a/app/models/avoir.rb +++ b/app/models/avoir.rb @@ -5,7 +5,7 @@ class Avoir < Invoice belongs_to :invoice - validates :avoir_mode, inclusion: { in: %w[stripe cheque transfer none cash wallet] } + validates :payment_method, inclusion: { in: %w[stripe cheque transfer none cash wallet] } attr_accessor :invoice_items_ids diff --git a/app/pdfs/pdf/invoice.rb b/app/pdfs/pdf/invoice.rb index 0efde3216..d2decd133 100644 --- a/app/pdfs/pdf/invoice.rb +++ b/app/pdfs/pdf/invoice.rb @@ -279,7 +279,7 @@ class PDF::Invoice < Prawn::Document move_down 20 if invoice.is_a?(Avoir) payment_verbose = I18n.t('invoices.refund_on_DATE', DATE:I18n.l(invoice.avoir_date.to_date)) + ' ' - case invoice.avoir_mode + case invoice.payment_method when 'stripe' payment_verbose += I18n.t('invoices.by_stripe_online_payment') when 'cheque' diff --git a/app/services/wallet_service.rb b/app/services/wallet_service.rb index 12d0a74e6..3dd88bc7c 100644 --- a/app/services/wallet_service.rb +++ b/app/services/wallet_service.rb @@ -51,7 +51,7 @@ class WalletService avoir.avoir_date = avoir_date avoir.created_at = avoir_date avoir.description = description - avoir.avoir_mode = 'wallet' + avoir.payment_method = 'wallet' avoir.subscription_to_expire = false avoir.invoicing_profile_id = wallet_transaction.wallet.user.invoicing_profile.id avoir.total = wallet_transaction.amount * 100.0 diff --git a/app/views/api/invoices/avoir.json.jbuilder b/app/views/api/invoices/avoir.json.jbuilder index 8dcf63f21..5ff6ea8fd 100644 --- a/app/views/api/invoices/avoir.json.jbuilder +++ b/app/views/api/invoices/avoir.json.jbuilder @@ -1,4 +1,4 @@ -json.extract! @avoir, :id, :created_at, :reference, :invoiced_type, :avoir_date, :avoir_mode, :invoice_id +json.extract! @avoir, :id, :created_at, :reference, :invoiced_type, :avoir_date, :payment_method, :invoice_id json.user_id @avoir.invoicing_profile.user_id json.total @avoir.total / 100.00 json.name @avoir.user.profile.full_name diff --git a/db/migrate/20190917123631_rename_avoir_mode_to_payment_method_from_invoices.rb b/db/migrate/20190917123631_rename_avoir_mode_to_payment_method_from_invoices.rb new file mode 100644 index 000000000..405ff2191 --- /dev/null +++ b/db/migrate/20190917123631_rename_avoir_mode_to_payment_method_from_invoices.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +# From this migration, this column will also be used to save the means of payment used to charge the customer +# This is due to Strong Customer Authentication changes, that don't store any more an stp_invoice_id in table +# "invoices". The new stp_payment_intent_id is not populated if the invoice total = 0 but we must know if the +# payment was made on site or online. +class RenameAvoirModeToPaymentMethodFromInvoices < ActiveRecord::Migration + def change + rename_column :invoices, :avoir_mode, :payment_method + end +end diff --git a/db/schema.rb b/db/schema.rb index 63670f088..b8826f52f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,12 +11,12 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20190910141336) do +ActiveRecord::Schema.define(version: 20190917123631) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" - enable_extension "pg_trgm" enable_extension "unaccent" + enable_extension "pg_trgm" create_table "abuses", force: :cascade do |t| t.integer "signaled_id" @@ -44,14 +44,14 @@ ActiveRecord::Schema.define(version: 20190910141336) do end create_table "addresses", force: :cascade do |t| - t.string "address", limit: 255 - t.string "street_number", limit: 255 - t.string "route", limit: 255 - t.string "locality", limit: 255 - t.string "country", limit: 255 - t.string "postal_code", limit: 255 + t.string "address" + t.string "street_number" + t.string "route" + t.string "locality" + t.string "country" + t.string "postal_code" t.integer "placeable_id" - t.string "placeable_type", limit: 255 + t.string "placeable_type" t.datetime "created_at" t.datetime "updated_at" end @@ -67,9 +67,9 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "assets", force: :cascade do |t| t.integer "viewable_id" - t.string "viewable_type", limit: 255 - t.string "attachment", limit: 255 - t.string "type", limit: 255 + t.string "viewable_type" + t.string "attachment" + t.string "type" t.datetime "created_at" t.datetime "updated_at" end @@ -86,12 +86,12 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "availabilities", force: :cascade do |t| t.datetime "start_at" t.datetime "end_at" - t.string "available_type", limit: 255 + t.string "available_type" t.datetime "created_at" t.datetime "updated_at" t.integer "nb_total_places" - t.boolean "destroying", default: false - t.boolean "lock", default: false + t.boolean "destroying", default: false + t.boolean "lock", default: false end create_table "availability_tags", force: :cascade do |t| @@ -105,7 +105,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "availability_tags", ["tag_id"], name: "index_availability_tags_on_tag_id", using: :btree create_table "categories", force: :cascade do |t| - t.string "name", limit: 255 + t.string "name" t.datetime "created_at" t.datetime "updated_at" t.string "slug" @@ -114,7 +114,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "categories", ["slug"], name: "index_categories_on_slug", unique: true, using: :btree create_table "components", force: :cascade do |t| - t.string "name", limit: 255, null: false + t.string "name", null: false end create_table "coupons", force: :cascade do |t| @@ -132,7 +132,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "credits", force: :cascade do |t| t.integer "creditable_id" - t.string "creditable_type", limit: 255 + t.string "creditable_type" t.integer "plan_id" t.integer "hours" t.datetime "created_at" @@ -173,7 +173,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "event_themes", ["slug"], name: "index_event_themes_on_slug", unique: true, using: :btree create_table "events", force: :cascade do |t| - t.string "title", limit: 255 + t.string "title" t.text "description" t.datetime "created_at" t.datetime "updated_at" @@ -212,10 +212,10 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "exports", ["user_id"], name: "index_exports_on_user_id", using: :btree create_table "friendly_id_slugs", force: :cascade do |t| - t.string "slug", limit: 255, null: false - t.integer "sluggable_id", null: false + t.string "slug", null: false + t.integer "sluggable_id", null: false t.string "sluggable_type", limit: 50 - t.string "scope", limit: 255 + t.string "scope" t.datetime "created_at" end @@ -225,10 +225,10 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "friendly_id_slugs", ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type", using: :btree create_table "groups", force: :cascade do |t| - t.string "name", limit: 255 + t.string "name" t.datetime "created_at" t.datetime "updated_at" - t.string "slug", limit: 255 + t.string "slug" t.boolean "disabled" end @@ -248,7 +248,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "invoice_items", force: :cascade do |t| t.integer "invoice_id" - t.string "stp_invoice_item_id", limit: 255 + t.string "stp_invoice_item_id" t.integer "amount" t.datetime "created_at" t.datetime "updated_at" @@ -262,16 +262,16 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "invoices", force: :cascade do |t| t.integer "invoiced_id" - t.string "invoiced_type", limit: 255 - t.string "stp_invoice_id", limit: 255 + t.string "invoiced_type" + t.string "stp_invoice_id" t.integer "total" t.datetime "created_at" t.datetime "updated_at" - t.string "reference", limit: 255 - t.string "avoir_mode", limit: 255 + t.string "reference" + t.string "payment_method" t.datetime "avoir_date" t.integer "invoice_id" - t.string "type", limit: 255 + t.string "type" t.boolean "subscription_to_expire" t.text "description" t.integer "wallet_amount" @@ -303,17 +303,17 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "invoicing_profiles", ["user_id"], name: "index_invoicing_profiles_on_user_id", using: :btree create_table "licences", force: :cascade do |t| - t.string "name", limit: 255, null: false + t.string "name", null: false t.text "description" end create_table "machines", force: :cascade do |t| - t.string "name", limit: 255, null: false + t.string "name", null: false t.text "description" t.text "spec" t.datetime "created_at" t.datetime "updated_at" - t.string "slug", limit: 255 + t.string "slug" t.boolean "disabled" end @@ -330,14 +330,14 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "notifications", force: :cascade do |t| t.integer "receiver_id" t.integer "attached_object_id" - t.string "attached_object_type", limit: 255 + t.string "attached_object_type" t.integer "notification_type_id" - t.boolean "is_read", default: false + t.boolean "is_read", default: false t.datetime "created_at" t.datetime "updated_at" t.string "receiver_type" - t.boolean "is_send", default: false - t.jsonb "meta_data", default: {} + t.boolean "is_send", default: false + t.jsonb "meta_data", default: {} end add_index "notifications", ["notification_type_id"], name: "index_notifications_on_notification_type_id", using: :btree @@ -406,20 +406,20 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "organizations", ["invoicing_profile_id"], name: "index_organizations_on_invoicing_profile_id", using: :btree create_table "plans", force: :cascade do |t| - t.string "name", limit: 255 + t.string "name" t.integer "amount" - t.string "interval", limit: 255 + t.string "interval" t.integer "group_id" - t.string "stp_plan_id", limit: 255 + t.string "stp_plan_id" t.datetime "created_at" t.datetime "updated_at" - t.integer "training_credit_nb", default: 0 - t.boolean "is_rolling", default: true + t.integer "training_credit_nb", default: 0 + t.boolean "is_rolling", default: true t.text "description" t.string "type" t.string "base_name" - t.integer "ui_weight", default: 0 - t.integer "interval_count", default: 1 + t.integer "ui_weight", default: 0 + t.integer "interval_count", default: 1 t.string "slug" t.boolean "disabled" end @@ -449,9 +449,9 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "profiles", force: :cascade do |t| t.integer "user_id" - t.string "first_name", limit: 255 - t.string "last_name", limit: 255 - t.string "phone", limit: 255 + t.string "first_name" + t.string "last_name" + t.string "phone" t.text "interest" t.text "software_mastered" t.datetime "created_at" @@ -481,7 +481,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do t.integer "project_id" t.datetime "created_at" t.datetime "updated_at" - t.string "title", limit: 255 + t.string "title" t.integer "step_nb" end @@ -492,27 +492,27 @@ ActiveRecord::Schema.define(version: 20190910141336) do t.integer "user_id" t.datetime "created_at" t.datetime "updated_at" - t.boolean "is_valid", default: false - t.string "valid_token", limit: 255 + t.boolean "is_valid", default: false + t.string "valid_token" end add_index "project_users", ["project_id"], name: "index_project_users_on_project_id", using: :btree add_index "project_users", ["user_id"], name: "index_project_users_on_user_id", using: :btree create_table "projects", force: :cascade do |t| - t.string "name", limit: 255 + t.string "name" t.text "description" t.datetime "created_at" t.datetime "updated_at" t.text "tags" t.integer "licence_id" - t.string "state", limit: 255 - t.string "slug", limit: 255 + t.string "state" + t.string "slug" t.datetime "published_at" t.integer "author_statistic_profile_id" end - add_index "projects", ["slug"], name: "index_projects_on_slug", using: :btree + add_index "projects", ["slug"], name: "index_projects_on_slug", unique: true, using: :btree create_table "projects_components", force: :cascade do |t| t.integer "project_id" @@ -556,13 +556,13 @@ ActiveRecord::Schema.define(version: 20190910141336) do t.integer "statistic_profile_id" end - add_index "reservations", ["reservable_id", "reservable_type"], name: "index_reservations_on_reservable_id_and_reservable_type", using: :btree + add_index "reservations", ["reservable_type", "reservable_id"], name: "index_reservations_on_reservable_type_and_reservable_id", using: :btree add_index "reservations", ["statistic_profile_id"], name: "index_reservations_on_statistic_profile_id", using: :btree create_table "roles", force: :cascade do |t| - t.string "name", limit: 255 + t.string "name" t.integer "resource_id" - t.string "resource_type", limit: 255 + t.string "resource_type" t.datetime "created_at" t.datetime "updated_at" end @@ -636,18 +636,18 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "statistic_fields", force: :cascade do |t| t.integer "statistic_index_id" - t.string "key", limit: 255 - t.string "label", limit: 255 + t.string "key" + t.string "label" t.datetime "created_at" t.datetime "updated_at" - t.string "data_type", limit: 255 + t.string "data_type" end add_index "statistic_fields", ["statistic_index_id"], name: "index_statistic_fields_on_statistic_index_id", using: :btree create_table "statistic_graphs", force: :cascade do |t| t.integer "statistic_index_id" - t.string "chart_type", limit: 255 + t.string "chart_type" t.integer "limit" t.datetime "created_at" t.datetime "updated_at" @@ -656,12 +656,12 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "statistic_graphs", ["statistic_index_id"], name: "index_statistic_graphs_on_statistic_index_id", using: :btree create_table "statistic_indices", force: :cascade do |t| - t.string "es_type_key", limit: 255 - t.string "label", limit: 255 + t.string "es_type_key" + t.string "label" t.datetime "created_at" t.datetime "updated_at" - t.boolean "table", default: true - t.boolean "ca", default: true + t.boolean "table", default: true + t.boolean "ca", default: true end create_table "statistic_profile_trainings", force: :cascade do |t| @@ -689,8 +689,8 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "statistic_profiles", ["user_id"], name: "index_statistic_profiles_on_user_id", using: :btree create_table "statistic_sub_types", force: :cascade do |t| - t.string "key", limit: 255 - t.string "label", limit: 255 + t.string "key" + t.string "label" t.datetime "created_at" t.datetime "updated_at" end @@ -707,8 +707,8 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "statistic_types", force: :cascade do |t| t.integer "statistic_index_id" - t.string "key", limit: 255 - t.string "label", limit: 255 + t.string "key" + t.string "label" t.boolean "graph" t.datetime "created_at" t.datetime "updated_at" @@ -725,7 +725,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do create_table "subscriptions", force: :cascade do |t| t.integer "plan_id" - t.string "stp_subscription_id", limit: 255 + t.string "stp_subscription_id" t.datetime "created_at" t.datetime "updated_at" t.datetime "expiration_date" @@ -745,7 +745,7 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree create_table "themes", force: :cascade do |t| - t.string "name", limit: 255, null: false + t.string "name", null: false end create_table "tickets", force: :cascade do |t| @@ -760,13 +760,13 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "tickets", ["reservation_id"], name: "index_tickets_on_reservation_id", using: :btree create_table "trainings", force: :cascade do |t| - t.string "name", limit: 255 + t.string "name" t.datetime "created_at" t.datetime "updated_at" t.integer "nb_total_places" - t.string "slug", limit: 255 + t.string "slug" t.text "description" - t.boolean "public_page", default: true + t.boolean "public_page", default: true t.boolean "disabled" end @@ -812,31 +812,31 @@ ActiveRecord::Schema.define(version: 20190910141336) do add_index "user_tags", ["user_id"], name: "index_user_tags_on_user_id", using: :btree create_table "users", force: :cascade do |t| - t.string "email", limit: 255, default: "", null: false - t.string "encrypted_password", limit: 255, default: "", null: false - t.string "reset_password_token", limit: 255 + t.string "email", default: "", null: false + t.string "encrypted_password", default: "", null: false + t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" - t.integer "sign_in_count", default: 0, null: false + t.integer "sign_in_count", default: 0, null: false t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" - t.string "current_sign_in_ip", limit: 255 - t.string "last_sign_in_ip", limit: 255 - t.string "confirmation_token", limit: 255 + t.string "current_sign_in_ip" + t.string "last_sign_in_ip" + t.string "confirmation_token" t.datetime "confirmed_at" t.datetime "confirmation_sent_at" - t.string "unconfirmed_email", limit: 255 - t.integer "failed_attempts", default: 0, null: false - t.string "unlock_token", limit: 255 + t.string "unconfirmed_email" + t.integer "failed_attempts", default: 0, null: false + t.string "unlock_token" t.datetime "locked_at" t.datetime "created_at" t.datetime "updated_at" - t.boolean "is_allow_contact", default: true + t.boolean "is_allow_contact", default: true t.integer "group_id" - t.string "stp_customer_id", limit: 255 - t.string "username", limit: 255 - t.string "slug", limit: 255 - t.boolean "is_active", default: true + t.string "stp_customer_id" + t.string "username" + t.string "slug" + t.boolean "is_active", default: true t.string "provider" t.string "uid" t.string "auth_token" diff --git a/test/fixtures/invoices.yml b/test/fixtures/invoices.yml index a959ef801..5d083af67 100644 --- a/test/fixtures/invoices.yml +++ b/test/fixtures/invoices.yml @@ -10,7 +10,7 @@ invoice_1: invoicing_profile_id: 3 statistic_profile_id: 3 reference: 1604001/VL - avoir_mode: + payment_method: avoir_date: invoice_id: type: @@ -31,7 +31,7 @@ invoice_2: invoicing_profile_id: 4 statistic_profile_id: 4 reference: '1604002' - avoir_mode: + payment_method: avoir_date: invoice_id: type: @@ -52,7 +52,7 @@ invoice_3: invoicing_profile_id: 7 statistic_profile_id: 7 reference: '1203001' - avoir_mode: + payment_method: avoir_date: invoice_id: type: @@ -74,7 +74,7 @@ invoice_4: invoicing_profile_id: 7 statistic_profile_id: 7 reference: '1203002' - avoir_mode: + payment_method: avoir_date: invoice_id: type: @@ -95,7 +95,7 @@ invoice_5: invoicing_profile_id: 3 statistic_profile_id: 3 reference: '1506031' - avoir_mode: + payment_method: avoir_date: invoice_id: type: diff --git a/test/integration/invoices/as_admin_test.rb b/test/integration/invoices/as_admin_test.rb index 53a920a3a..bee8de4ec 100644 --- a/test/integration/invoices/as_admin_test.rb +++ b/test/integration/invoices/as_admin_test.rb @@ -37,7 +37,7 @@ class InvoicesTest < ActionDispatch::IntegrationTest post '/api/invoices', { avoir: { avoir_date: date, - avoir_mode: 'cash', + payment_method: 'cash', description: 'Lorem ipsum', invoice_id: 4, invoice_items_ids: [4], @@ -54,7 +54,7 @@ class InvoicesTest < ActionDispatch::IntegrationTest assert_dates_equal date, refund[:avoir_date] assert_dates_equal date, refund[:date] - assert_equal 'cash', refund[:avoir_mode] + assert_equal 'cash', refund[:payment_method] assert_equal false, refund[:has_avoir] assert_equal 4, refund[:invoice_id] assert_equal 4, refund[:items][0][:invoice_item_id] @@ -70,7 +70,7 @@ class InvoicesTest < ActionDispatch::IntegrationTest post '/api/invoices', { avoir: { avoir_date: date, - avoir_mode: 'cash', + payment_method: 'cash', description: 'Unable to refund', invoice_id: 5, invoice_items_ids: [5],