wip multi orders

This commit is contained in:
viehlieb 2025-05-08 11:59:35 +02:00
parent fd769509af
commit f676497e43
29 changed files with 939 additions and 107 deletions

View 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

View 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

View 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

View 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

View file

@ -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

View 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
View 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

View file

@ -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