wip multi orders
This commit is contained in:
parent
fd769509af
commit
f676497e43
29 changed files with 939 additions and 107 deletions
13
db/migrate/20250403102400_create_ordergroup_invoices.rb
Normal file
13
db/migrate/20250403102400_create_ordergroup_invoices.rb
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
class CreateOrdergroupInvoices < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
create_table :ordergroup_invoices do |t|
|
||||
t.date :invoice_date
|
||||
t.string :invoice_number
|
||||
t.string :payment_method
|
||||
t.boolean :paid, default: false
|
||||
t.boolean :sepa_downloaded, default: false
|
||||
t.string :sepa_sequence_type, default: "RCUR"
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
7
db/migrate/20250410090018_create_multi_orders.rb
Normal file
7
db/migrate/20250410090018_create_multi_orders.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
class CreateMultiOrders < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
create_table :multi_orders, id: :integer do |t|
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
5
db/migrate/20250410090902_add_multi_order_to_orders.rb
Normal file
5
db/migrate/20250410090902_add_multi_order_to_orders.rb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
class AddMultiOrderToOrders < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_reference :orders, :multi_order, foreign_key: true, type: :integer
|
||||
end
|
||||
end
|
||||
8
db/migrate/20250425093336_create_multi_group_orders.rb
Normal file
8
db/migrate/20250425093336_create_multi_group_orders.rb
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
class CreateMultiGroupOrders < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
create_table :multi_group_orders, id: :integer do |t|
|
||||
t.references :multi_order, null: false, foreign_key: true, type: :integer
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
class AddMultiGroupOrderToGroupOrders < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_reference :group_orders, :multi_group_order, foreign_key: true, type: :integer
|
||||
end
|
||||
end
|
||||
16
db/migrate/20250430091541_add_ends_to_multi_order.rb
Normal file
16
db/migrate/20250430091541_add_ends_to_multi_order.rb
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
class AddEndsToMultiOrder < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_column :multi_orders, :ends, :datetime
|
||||
|
||||
reversible do |dir|
|
||||
dir.up do
|
||||
MultiOrder.reset_column_information
|
||||
|
||||
MultiOrder.find_each do |multi_order|
|
||||
max_ends = multi_order.orders.maximum(:ends)
|
||||
multi_order.update_columns(ends: max_ends) if max_ends.present?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
337
db/routes.rb
Normal file
337
db/routes.rb
Normal file
|
|
@ -0,0 +1,337 @@
|
|||
# rubocop:disable Metrics/BlockLength
|
||||
Rails.application.routes.draw do
|
||||
mount Rswag::Ui::Engine => '/api-docs'
|
||||
mount Rswag::Api::Engine => '/api-docs'
|
||||
get 'order_comments/new'
|
||||
|
||||
get 'comments/new'
|
||||
|
||||
get 'sessions/new'
|
||||
|
||||
root to: 'sessions#redirect_to_foodcoop', as: nil
|
||||
|
||||
scope '/:foodcoop' do
|
||||
use_doorkeeper
|
||||
|
||||
# Root path
|
||||
root to: 'home#index'
|
||||
|
||||
########### Sessions
|
||||
|
||||
get '/login' => 'sessions#new', as: 'login'
|
||||
get '/logout' => 'sessions#destroy', as: 'logout'
|
||||
get '/login/forgot_password' => 'login#forgot_password', as: :forgot_password
|
||||
post '/login/reset_password' => 'login#reset_password', as: :reset_password
|
||||
get '/login/new_password' => 'login#new_password', as: :new_password
|
||||
patch '/login/update_password' => 'login#update_password', as: :update_password
|
||||
match '/login/accept_invitation/:token' => 'login#accept_invitation', as: :accept_invitation, via: %i[get post]
|
||||
resources :sessions, only: %i[new create destroy]
|
||||
|
||||
get '/foodcoop.css' => 'styles#foodcoop', as: 'foodcoop_css'
|
||||
|
||||
########### User specific
|
||||
|
||||
get '/home/profile', as: 'my_profile'
|
||||
get '/home/reference_calculator'
|
||||
patch '/home/update_profile', as: 'update_profile'
|
||||
get '/home/ordergroup' => 'home#ordergroup', as: 'my_ordergroup'
|
||||
post '/home/cancel_membership' => 'home#cancel_membership', as: 'cancel_membership'
|
||||
|
||||
############ Orders, ordering
|
||||
|
||||
resources :orders do
|
||||
member do
|
||||
post :finish
|
||||
post :add_comment
|
||||
post :send_result_to_supplier
|
||||
|
||||
get :receive
|
||||
post :receive
|
||||
|
||||
get :render_modal
|
||||
|
||||
get :receive_on_order_article_create
|
||||
get :receive_on_order_article_update
|
||||
|
||||
get :collective_direct_debit
|
||||
end
|
||||
|
||||
resources :order_articles
|
||||
end
|
||||
|
||||
resources :pickups, only: [:index] do
|
||||
post :document, on: :collection
|
||||
end
|
||||
|
||||
resources :group_orders do
|
||||
get :archive, on: :collection
|
||||
end
|
||||
|
||||
resources :group_order_articles
|
||||
|
||||
resources :order_comments, only: %i[new create]
|
||||
|
||||
############ Foodcoop orga
|
||||
|
||||
resources :invites, only: %i[new create]
|
||||
|
||||
resources :tasks do
|
||||
collection do
|
||||
get :user
|
||||
get :archive
|
||||
get :workgroup
|
||||
end
|
||||
member do
|
||||
post :accept
|
||||
post :reject
|
||||
post :set_done
|
||||
end
|
||||
end
|
||||
|
||||
namespace :foodcoop do
|
||||
root to: 'users#index'
|
||||
|
||||
resources :users, only: [:index]
|
||||
|
||||
resources :ordergroups, only: [:index]
|
||||
|
||||
resources :workgroups, only: %i[index edit update]
|
||||
end
|
||||
|
||||
########### Article management
|
||||
|
||||
resources :stock_takings do
|
||||
collection do
|
||||
get :new_on_stock_article_create
|
||||
end
|
||||
end
|
||||
|
||||
resources :stock_articles, controller: 'stockit' do
|
||||
get :copy
|
||||
collection do
|
||||
get :derive
|
||||
|
||||
get :index_on_stock_article_create
|
||||
get :index_on_stock_article_update
|
||||
|
||||
get :show_on_stock_article_update
|
||||
end
|
||||
end
|
||||
|
||||
resources :suppliers do
|
||||
get :shared_suppliers, on: :collection
|
||||
|
||||
resources :deliveries do
|
||||
collection do
|
||||
post :add_stock_change
|
||||
|
||||
get :form_on_stock_article_create
|
||||
get :form_on_stock_article_update
|
||||
end
|
||||
end
|
||||
|
||||
resources :articles do
|
||||
get :copy
|
||||
collection do
|
||||
post :update_selected
|
||||
get :edit_all
|
||||
post :update_all
|
||||
get :upload
|
||||
post :parse_upload
|
||||
post :create_from_upload
|
||||
get :shared
|
||||
get :import
|
||||
post :sync
|
||||
post :update_synchronized
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
post 'finance/group_order_invoice', to: 'group_order_invoices#create_multiple'
|
||||
|
||||
get 'orders/:order_id/group_order_invoices/download_all', to: 'group_order_invoices#download_all', as: 'download_all_group_order_invoices'
|
||||
|
||||
resources :ordergroup_invoices do
|
||||
member do
|
||||
get :download_collective
|
||||
end
|
||||
end
|
||||
|
||||
resources :group_order_invoices do
|
||||
member do
|
||||
patch :select_sepa_sequence_type
|
||||
patch :toggle_paid
|
||||
patch :toggle_sepa_downloaded
|
||||
end
|
||||
collection do
|
||||
get :download_within_date
|
||||
patch :select_all_sepa_sequence_type
|
||||
patch :toggle_all_sepa_downloaded
|
||||
patch :toggle_all_paid
|
||||
end
|
||||
end
|
||||
|
||||
resources :multi_orders, only: [:create, :show] do
|
||||
member do
|
||||
get :generate_ordergroup_invoices
|
||||
end
|
||||
end
|
||||
|
||||
resources :article_categories
|
||||
|
||||
########### Finance
|
||||
|
||||
namespace :finance do
|
||||
root to: 'base#index'
|
||||
|
||||
resources :order, controller: 'balancing', path: 'balancing' do
|
||||
member do
|
||||
get :update_summary
|
||||
get :edit_note
|
||||
put :update_note
|
||||
get :edit_transport
|
||||
put :update_transport
|
||||
|
||||
get :confirm
|
||||
post :close
|
||||
patch :close_direct
|
||||
|
||||
get :new_on_order_article_create
|
||||
get :new_on_order_article_update
|
||||
|
||||
get :collective_direct_debit
|
||||
end
|
||||
|
||||
post :close_all_direct_with_invoice, on: :collection
|
||||
end
|
||||
|
||||
resources :invoices do
|
||||
get :attachment
|
||||
get :form_on_supplier_id_change, on: :collection
|
||||
get :unpaid, on: :collection
|
||||
end
|
||||
|
||||
resources :links, controller: 'financial_links', only: %i[create show] do
|
||||
collection do
|
||||
get :incomplete
|
||||
end
|
||||
member do
|
||||
get :index_bank_transaction
|
||||
put 'bank_transactions/:bank_transaction', action: 'add_bank_transaction', as: 'add_bank_transaction'
|
||||
delete 'bank_transactions/:bank_transaction', action: 'remove_bank_transaction', as: 'remove_bank_transaction'
|
||||
|
||||
get :index_financial_transaction
|
||||
put 'financial_transactions/:financial_transaction', action: 'add_financial_transaction',
|
||||
as: 'add_financial_transaction'
|
||||
delete 'financial_transactions/:financial_transaction', action: 'remove_financial_transaction',
|
||||
as: 'remove_financial_transaction'
|
||||
|
||||
get :index_invoice
|
||||
put 'invoices/:invoice', action: 'add_invoice', as: 'add_invoice'
|
||||
delete 'invoices/:invoice', action: 'remove_invoice', as: 'remove_invoice'
|
||||
|
||||
get :new_financial_transaction
|
||||
post :create_financial_transaction
|
||||
end
|
||||
end
|
||||
|
||||
resources :ordergroups, only: [:index] do
|
||||
resources :financial_transactions, as: :transactions
|
||||
end
|
||||
resources :financial_transactions, as: :foodcoop_financial_transactions, path: 'foodcoop/financial_transactions',
|
||||
only: %i[index new create]
|
||||
get :transactions, controller: :financial_transactions, action: :index_collection
|
||||
delete 'transactions/:id', controller: :financial_transactions, action: :destroy, as: :transaction
|
||||
|
||||
get 'transactions/new_collection' => 'financial_transactions#new_collection', as: 'new_transaction_collection'
|
||||
post 'transactions/create_collection' => 'financial_transactions#create_collection',
|
||||
as: 'create_transaction_collection'
|
||||
|
||||
resources :bank_accounts, only: [:index] do
|
||||
member do
|
||||
get :assign_unlinked_transactions
|
||||
get :import
|
||||
post :import
|
||||
end
|
||||
|
||||
resources :bank_transactions, as: :transactions
|
||||
end
|
||||
|
||||
resources :bank_transactions, only: %i[index show]
|
||||
end
|
||||
|
||||
########### Administration
|
||||
|
||||
namespace :admin do
|
||||
root to: 'base#index'
|
||||
|
||||
resources :finances, only: [:index] do
|
||||
get :update_bank_accounts, on: :collection
|
||||
get :update_bank_gateways, on: :collection
|
||||
get :update_transaction_types, on: :collection
|
||||
get :update_supplier_categories, on: :collection
|
||||
end
|
||||
|
||||
resources :bank_accounts
|
||||
resources :bank_gateways
|
||||
resources :financial_transaction_classes
|
||||
resources :financial_transaction_types
|
||||
resources :supplier_categories
|
||||
|
||||
resources :users do
|
||||
post :restore, on: :member
|
||||
post :sudo, on: :member
|
||||
end
|
||||
|
||||
resources :workgroups do
|
||||
get :memberships, on: :member
|
||||
end
|
||||
|
||||
resources :ordergroups do
|
||||
get :memberships, on: :member
|
||||
end
|
||||
|
||||
resources :mail_delivery_status, only: %i[index show destroy] do
|
||||
delete :index, on: :collection, action: :destroy_all
|
||||
end
|
||||
|
||||
resource :config, only: %i[show update] do
|
||||
get :list
|
||||
end
|
||||
end
|
||||
|
||||
############## API
|
||||
|
||||
namespace :api do
|
||||
namespace :v1 do
|
||||
resource :config, only: [:show]
|
||||
resource :navigation, only: [:show]
|
||||
|
||||
namespace :user do
|
||||
root to: 'users#show'
|
||||
get :financial_overview, to: 'ordergroup#financial_overview'
|
||||
resources :financial_transactions, only: %i[index show create]
|
||||
resources :group_order_articles
|
||||
end
|
||||
|
||||
resources :financial_transaction_classes, only: %i[index show]
|
||||
resources :financial_transaction_types, only: %i[index show]
|
||||
resources :financial_transactions, only: %i[index show]
|
||||
resources :orders, only: %i[index show]
|
||||
resources :order_articles, only: %i[index show]
|
||||
resources :group_order_articles
|
||||
resources :article_categories, only: %i[index show]
|
||||
end
|
||||
end
|
||||
|
||||
############## Feedback
|
||||
|
||||
resource :feedback, only: %i[new create], controller: 'feedback'
|
||||
|
||||
############## The rest
|
||||
|
||||
resources :users, only: [:index]
|
||||
end # End of /:foodcoop scope
|
||||
end
|
||||
# rubocop:enable Metrics/BlockLength
|
||||
145
db/schema.rb
145
db/schema.rb
|
|
@ -10,8 +10,8 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
||||
create_table "action_text_rich_texts", charset: "utf8mb4", force: :cascade do |t|
|
||||
ActiveRecord::Schema[7.0].define(version: 2025_04_30_091541) do
|
||||
create_table "action_text_rich_texts", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.text "body", size: :long
|
||||
t.string "record_type", null: false
|
||||
|
|
@ -21,7 +21,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["record_type", "record_id", "name"], name: "index_action_text_rich_texts_uniqueness", unique: true
|
||||
end
|
||||
|
||||
create_table "active_storage_attachments", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "active_storage_attachments", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "record_type", null: false
|
||||
t.bigint "record_id", null: false
|
||||
|
|
@ -31,7 +31,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["record_type", "record_id", "name", "blob_id"], name: "index_active_storage_attachments_uniqueness", unique: true
|
||||
end
|
||||
|
||||
create_table "active_storage_blobs", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "active_storage_blobs", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "key", null: false
|
||||
t.string "filename", null: false
|
||||
t.string "content_type"
|
||||
|
|
@ -43,19 +43,19 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true
|
||||
end
|
||||
|
||||
create_table "active_storage_variant_records", charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "active_storage_variant_records", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "blob_id", null: false
|
||||
t.string "variation_digest", null: false
|
||||
t.index ["blob_id", "variation_digest"], name: "index_active_storage_variant_records_uniqueness", unique: true
|
||||
end
|
||||
|
||||
create_table "article_categories", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "article_categories", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", default: "", null: false
|
||||
t.string "description"
|
||||
t.index ["name"], name: "index_article_categories_on_name", unique: true
|
||||
end
|
||||
|
||||
create_table "article_prices", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "article_prices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "article_id", null: false
|
||||
t.decimal "price", precision: 8, scale: 2, default: "0.0", null: false
|
||||
t.decimal "tax", precision: 8, scale: 2, default: "0.0", null: false
|
||||
|
|
@ -65,7 +65,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["article_id"], name: "index_article_prices_on_article_id"
|
||||
end
|
||||
|
||||
create_table "articles", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "articles", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", default: "", null: false
|
||||
t.integer "supplier_id", default: 0, null: false
|
||||
t.integer "article_category_id", default: 0, null: false
|
||||
|
|
@ -91,14 +91,14 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["type"], name: "index_articles_on_type"
|
||||
end
|
||||
|
||||
create_table "assignments", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "assignments", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "user_id", default: 0, null: false
|
||||
t.integer "task_id", default: 0, null: false
|
||||
t.boolean "accepted", default: false
|
||||
t.index ["user_id", "task_id"], name: "index_assignments_on_user_id_and_task_id", unique: true
|
||||
end
|
||||
|
||||
create_table "bank_accounts", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "bank_accounts", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "iban"
|
||||
t.string "description"
|
||||
|
|
@ -108,14 +108,14 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.integer "bank_gateway_id"
|
||||
end
|
||||
|
||||
create_table "bank_gateways", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "bank_gateways", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "url", null: false
|
||||
t.string "authorization"
|
||||
t.integer "unattended_user_id"
|
||||
end
|
||||
|
||||
create_table "bank_transactions", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "bank_transactions", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "bank_account_id", null: false
|
||||
t.string "external_id"
|
||||
t.date "date"
|
||||
|
|
@ -129,7 +129,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["financial_link_id"], name: "index_bank_transactions_on_financial_link_id"
|
||||
end
|
||||
|
||||
create_table "documents", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "documents", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "mime"
|
||||
t.binary "data", size: :long
|
||||
|
|
@ -140,16 +140,16 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["parent_id"], name: "index_documents_on_parent_id"
|
||||
end
|
||||
|
||||
create_table "financial_links", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "financial_links", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.text "note"
|
||||
end
|
||||
|
||||
create_table "financial_transaction_classes", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "financial_transaction_classes", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.boolean "ignore_for_account_balance", default: false, null: false
|
||||
end
|
||||
|
||||
create_table "financial_transaction_types", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "financial_transaction_types", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.integer "financial_transaction_class_id", null: false
|
||||
t.string "name_short"
|
||||
|
|
@ -157,7 +157,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["name_short"], name: "index_financial_transaction_types_on_name_short"
|
||||
end
|
||||
|
||||
create_table "financial_transactions", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "financial_transactions", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "ordergroup_id"
|
||||
t.decimal "amount", precision: 8, scale: 2, default: "0.0", null: false
|
||||
t.text "note", null: false
|
||||
|
|
@ -171,7 +171,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["reverts_id"], name: "index_financial_transactions_on_reverts_id", unique: true
|
||||
end
|
||||
|
||||
create_table "group_order_article_quantities", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "group_order_article_quantities", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "group_order_article_id", default: 0, null: false
|
||||
t.integer "quantity", default: 0
|
||||
t.integer "tolerance", default: 0
|
||||
|
|
@ -179,7 +179,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["group_order_article_id"], name: "index_group_order_article_quantities_on_group_order_article_id"
|
||||
end
|
||||
|
||||
create_table "group_order_articles", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "group_order_articles", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "group_order_id", default: 0, null: false
|
||||
t.integer "order_article_id", default: 0, null: false
|
||||
t.integer "quantity", default: 0, null: false
|
||||
|
|
@ -192,7 +192,15 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["order_article_id"], name: "index_group_order_articles_on_order_article_id"
|
||||
end
|
||||
|
||||
create_table "group_order_invoices", charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "group_order_invoice_group_orders", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "group_order_id", null: false
|
||||
t.integer "group_order_invoice_id", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["group_order_id"], name: "fk_rails_c328734572"
|
||||
end
|
||||
|
||||
create_table "group_order_invoices", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "group_order_id"
|
||||
t.bigint "invoice_number"
|
||||
t.date "invoice_date"
|
||||
|
|
@ -202,10 +210,9 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.boolean "paid", default: false
|
||||
t.boolean "sepa_downloaded", default: false
|
||||
t.string "sepa_sequence_type", default: "RCUR"
|
||||
t.index ["group_order_id"], name: "index_group_order_invoices_on_group_order_id", unique: true
|
||||
end
|
||||
|
||||
create_table "group_orders", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "group_orders", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "ordergroup_id"
|
||||
t.integer "order_id", default: 0, null: false
|
||||
t.decimal "price", precision: 8, scale: 2, default: "0.0", null: false
|
||||
|
|
@ -213,12 +220,16 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.datetime "updated_on", precision: nil, null: false
|
||||
t.integer "updated_by_user_id"
|
||||
t.decimal "transport", precision: 8, scale: 2
|
||||
t.integer "ordergroup_invoice_id"
|
||||
t.integer "multi_group_order_id"
|
||||
t.index ["multi_group_order_id"], name: "index_group_orders_on_multi_group_order_id"
|
||||
t.index ["order_id"], name: "index_group_orders_on_order_id"
|
||||
t.index ["ordergroup_id", "order_id"], name: "index_group_orders_on_ordergroup_id_and_order_id", unique: true
|
||||
t.index ["ordergroup_id"], name: "index_group_orders_on_ordergroup_id"
|
||||
t.index ["ordergroup_invoice_id"], name: "index_group_orders_on_ordergroup_invoice_id"
|
||||
end
|
||||
|
||||
create_table "groups", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "groups", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "type", default: "", null: false
|
||||
t.string "name", default: "", null: false
|
||||
t.string "description"
|
||||
|
|
@ -244,7 +255,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["name"], name: "index_groups_on_name", unique: true
|
||||
end
|
||||
|
||||
create_table "invites", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "invites", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "token", default: "", null: false
|
||||
t.datetime "expires_at", precision: nil, null: false
|
||||
t.integer "group_id", default: 0, null: false
|
||||
|
|
@ -253,7 +264,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["token"], name: "index_invites_on_token"
|
||||
end
|
||||
|
||||
create_table "invoices", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "invoices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "supplier_id"
|
||||
t.string "number"
|
||||
t.date "date"
|
||||
|
|
@ -271,7 +282,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["supplier_id"], name: "index_invoices_on_supplier_id"
|
||||
end
|
||||
|
||||
create_table "links", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "links", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "url", null: false
|
||||
t.integer "workgroup_id"
|
||||
|
|
@ -279,7 +290,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.string "authorization"
|
||||
end
|
||||
|
||||
create_table "mail_delivery_status", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "mail_delivery_status", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.datetime "created_at", precision: nil
|
||||
t.string "email", null: false
|
||||
t.string "message", null: false
|
||||
|
|
@ -288,13 +299,13 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["email"], name: "index_mail_delivery_status_on_email"
|
||||
end
|
||||
|
||||
create_table "memberships", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "memberships", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "group_id", default: 0, null: false
|
||||
t.integer "user_id", default: 0, null: false
|
||||
t.index ["user_id", "group_id"], name: "index_memberships_on_user_id_and_group_id", unique: true
|
||||
end
|
||||
|
||||
create_table "message_recipients", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "message_recipients", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "message_id", null: false
|
||||
t.integer "user_id", null: false
|
||||
t.integer "email_state", default: 0, null: false
|
||||
|
|
@ -303,7 +314,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["user_id", "read_at"], name: "index_message_recipients_on_user_id_and_read_at"
|
||||
end
|
||||
|
||||
create_table "messages", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "messages", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "sender_id"
|
||||
t.string "subject", null: false
|
||||
t.boolean "private", default: false
|
||||
|
|
@ -314,7 +325,20 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.binary "received_email", size: :medium
|
||||
end
|
||||
|
||||
create_table "oauth_access_grants", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "multi_group_orders", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "multi_order_id", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["multi_order_id"], name: "index_multi_group_orders_on_multi_order_id"
|
||||
end
|
||||
|
||||
create_table "multi_orders", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "ends"
|
||||
end
|
||||
|
||||
create_table "oauth_access_grants", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "resource_owner_id", null: false
|
||||
t.integer "application_id", null: false
|
||||
t.string "token", null: false
|
||||
|
|
@ -326,7 +350,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
|
||||
end
|
||||
|
||||
create_table "oauth_access_tokens", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "oauth_access_tokens", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "resource_owner_id"
|
||||
t.integer "application_id"
|
||||
t.string "token", null: false
|
||||
|
|
@ -340,7 +364,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true
|
||||
end
|
||||
|
||||
create_table "oauth_applications", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "oauth_applications", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "uid", null: false
|
||||
t.string "secret", null: false
|
||||
|
|
@ -352,7 +376,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true
|
||||
end
|
||||
|
||||
create_table "order_articles", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "order_articles", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "order_id", default: 0, null: false
|
||||
t.integer "article_id", default: 0, null: false
|
||||
t.integer "quantity", default: 0, null: false
|
||||
|
|
@ -366,7 +390,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["order_id"], name: "index_order_articles_on_order_id"
|
||||
end
|
||||
|
||||
create_table "order_comments", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "order_comments", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "order_id"
|
||||
t.integer "user_id"
|
||||
t.text "text"
|
||||
|
|
@ -374,7 +398,18 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["order_id"], name: "index_order_comments_on_order_id"
|
||||
end
|
||||
|
||||
create_table "orders", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "ordergroup_invoices", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.date "invoice_date"
|
||||
t.string "invoice_number"
|
||||
t.string "payment_method"
|
||||
t.boolean "paid", default: false
|
||||
t.boolean "sepa_downloaded", default: false
|
||||
t.string "sepa_sequence_type", default: "RCUR"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "orders", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "supplier_id"
|
||||
t.text "note"
|
||||
t.datetime "starts", precision: nil
|
||||
|
|
@ -390,10 +425,12 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.datetime "last_sent_mail", precision: nil
|
||||
t.integer "end_action", default: 0, null: false
|
||||
t.decimal "transport", precision: 8, scale: 2
|
||||
t.integer "multi_order_id"
|
||||
t.index ["multi_order_id"], name: "index_orders_on_multi_order_id"
|
||||
t.index ["state"], name: "index_orders_on_state"
|
||||
end
|
||||
|
||||
create_table "page_versions", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "page_versions", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "page_id"
|
||||
t.integer "lock_version"
|
||||
t.text "body"
|
||||
|
|
@ -404,7 +441,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["page_id"], name: "index_page_versions_on_page_id"
|
||||
end
|
||||
|
||||
create_table "pages", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "pages", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "title"
|
||||
t.text "body"
|
||||
t.string "permalink"
|
||||
|
|
@ -418,20 +455,20 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["title"], name: "index_pages_on_title"
|
||||
end
|
||||
|
||||
create_table "periodic_task_groups", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "periodic_task_groups", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.date "next_task_date"
|
||||
t.datetime "created_at", precision: nil, null: false
|
||||
t.datetime "updated_at", precision: nil, null: false
|
||||
end
|
||||
|
||||
create_table "poll_choices", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "poll_choices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "poll_vote_id", null: false
|
||||
t.integer "choice", null: false
|
||||
t.integer "value", null: false
|
||||
t.index ["poll_vote_id", "choice"], name: "index_poll_choices_on_poll_vote_id_and_choice", unique: true
|
||||
end
|
||||
|
||||
create_table "poll_votes", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "poll_votes", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "poll_id", null: false
|
||||
t.integer "user_id", null: false
|
||||
t.integer "ordergroup_id"
|
||||
|
|
@ -441,7 +478,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["poll_id", "user_id", "ordergroup_id"], name: "index_poll_votes_on_poll_id_and_user_id_and_ordergroup_id", unique: true
|
||||
end
|
||||
|
||||
create_table "polls", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "polls", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "created_by_user_id", null: false
|
||||
t.string "name", null: false
|
||||
t.text "description"
|
||||
|
|
@ -461,7 +498,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["final_choice"], name: "index_polls_on_final_choice"
|
||||
end
|
||||
|
||||
create_table "printer_job_updates", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "printer_job_updates", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "printer_job_id", null: false
|
||||
t.datetime "created_at", precision: nil, null: false
|
||||
t.string "state", null: false
|
||||
|
|
@ -469,7 +506,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["printer_job_id", "created_at"], name: "index_printer_job_updates_on_printer_job_id_and_created_at"
|
||||
end
|
||||
|
||||
create_table "printer_jobs", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "printer_jobs", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "order_id"
|
||||
t.string "document", null: false
|
||||
t.integer "created_by_user_id", null: false
|
||||
|
|
@ -478,7 +515,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["finished_at"], name: "index_printer_jobs_on_finished_at"
|
||||
end
|
||||
|
||||
create_table "sepa_account_holders", charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "sepa_account_holders", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.bigint "user_id", null: false
|
||||
t.bigint "group_id", null: false
|
||||
t.string "iban"
|
||||
|
|
@ -491,7 +528,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["user_id"], name: "index_sepa_account_holders_on_user_id"
|
||||
end
|
||||
|
||||
create_table "settings", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "settings", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "var", null: false
|
||||
t.text "value"
|
||||
t.integer "thing_id"
|
||||
|
|
@ -501,7 +538,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["thing_type", "thing_id", "var"], name: "index_settings_on_thing_type_and_thing_id_and_var", unique: true
|
||||
end
|
||||
|
||||
create_table "stock_changes", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "stock_changes", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "stock_event_id"
|
||||
t.integer "order_id"
|
||||
t.integer "stock_article_id"
|
||||
|
|
@ -511,7 +548,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["stock_event_id"], name: "index_stock_changes_on_stock_event_id"
|
||||
end
|
||||
|
||||
create_table "stock_events", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "stock_events", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.integer "supplier_id"
|
||||
t.date "date"
|
||||
t.datetime "created_at", precision: nil
|
||||
|
|
@ -521,14 +558,14 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["supplier_id"], name: "index_stock_events_on_supplier_id"
|
||||
end
|
||||
|
||||
create_table "supplier_categories", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "supplier_categories", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "description"
|
||||
t.integer "financial_transaction_class_id"
|
||||
t.integer "bank_account_id"
|
||||
end
|
||||
|
||||
create_table "suppliers", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "suppliers", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", default: "", null: false
|
||||
t.string "address", default: "", null: false
|
||||
t.string "phone", default: "", null: false
|
||||
|
|
@ -550,7 +587,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["name"], name: "index_suppliers_on_name", unique: true
|
||||
end
|
||||
|
||||
create_table "tasks", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "tasks", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "name", default: "", null: false
|
||||
t.text "description"
|
||||
t.date "due_date"
|
||||
|
|
@ -567,7 +604,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
t.index ["workgroup_id"], name: "index_tasks_on_workgroup_id"
|
||||
end
|
||||
|
||||
create_table "users", id: :integer, charset: "utf8mb4", force: :cascade do |t|
|
||||
create_table "users", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t|
|
||||
t.string "nick"
|
||||
t.string "password_hash", default: "", null: false
|
||||
t.string "password_salt", default: "", null: false
|
||||
|
|
@ -588,4 +625,8 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_11_121430) do
|
|||
end
|
||||
|
||||
add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
|
||||
add_foreign_key "group_order_invoice_group_orders", "group_orders"
|
||||
add_foreign_key "group_orders", "multi_group_orders"
|
||||
add_foreign_key "multi_group_orders", "multi_orders"
|
||||
add_foreign_key "orders", "multi_orders"
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue