Skip to content

Commit

Permalink
Wip ...
Browse files Browse the repository at this point in the history
  • Loading branch information
mtnstar committed May 8, 2024
1 parent 5646e4a commit 91d5138
Show file tree
Hide file tree
Showing 12 changed files with 354 additions and 0 deletions.
14 changes: 14 additions & 0 deletions app/assets/stylesheets/hitobito/customizable/_wagon.scss
Expand Up @@ -49,3 +49,17 @@
}
}
}

.sac-field-container {
width: 1000px;
.sac-field-row {
display: flex;
flex-direction: row;
padding: 5px;
.sac-field-column {
display: flex;
flex-direction: column;
flex: 1;
}
}
}
28 changes: 28 additions & 0 deletions app/controllers/sac_membership_configs_controller.rb
@@ -0,0 +1,28 @@
# frozen_string_literal: true

# Copyright (c) 2024, Schweizer Alpen-Club. This file is part of
# hitobito_sac_cas and licensed under the Affero General Public License version 3
# or later. See the COPYING file at the top-level directory or at
# https://github.com/hitobito/hitobito_sac_cas

class SacMembershipConfigsController < CrudController
self.nesting = Group

decorates :sac_membership_config

def index
redirect_to latest_config_entry_path
end

private

def find_entry
SacMembershipConfig.find(params[:id])
end

def latest_config_entry_path
latest_config = SacMembershipConfig.all.order(valid_from: :desc).limit(1).first
helpers.edit_group_sac_membership_config_path(group_id: Group.root.id, id: latest_config.id)
end

end
15 changes: 15 additions & 0 deletions app/decorators/sac_membership_config_decorator.rb
@@ -0,0 +1,15 @@
# frozen_string_literal: true

# Copyright (c) 2024, Schweizer Alpen-Club. This file is part of
# hitobito_sac_cas and licensed under the Affero General Public License version 3
# or later. See the COPYING file at the top-level directory or at
# https://github.com/hitobito/hitobito_sac_cas.

class SacMembershipConfigDecorator < ApplicationDecorator
decorates SacMembershipConfig

def to_s
"#{@object.class.model_name.human} (#{valid_from})"
end

end
17 changes: 17 additions & 0 deletions app/helpers/sac_cas/dropdown/group_edit.rb
@@ -0,0 +1,17 @@
# frozen_string_literal: true

# Copyright (c) 2024, Schweizer Alpen-Club. This file is part of
# hitobito_sac_cas and licensed under the Affero General Public License version 3
# or later. See the COPYING file at the top-level directory or at
# https://github.com/hitobito/hitobito_sac_cas

module SacCas::Dropdown::GroupEdit
def initialize(template, group)
super(template, group)
if group.root?
add_item(translate(:sac_membership_configs),
template.group_sac_membership_configs_path(
group_id: Group.root.id))
end
end
end
12 changes: 12 additions & 0 deletions app/helpers/sheet/sac_membership_config.rb
@@ -0,0 +1,12 @@
# frozen_string_literal: true

# Copyright (c) 2024, Schweizer Alpen-Club. This file is part of
# hitobito_sac_cas and licensed under the Affero General Public License version 3
# or later. See the COPYING file at the top-level directory or at
# https://github.com/hitobito/hitobito_sac_cas

module Sheet
class SacMembershipConfig < Base
self.parent_sheet = Sheet::Group
end
end
10 changes: 10 additions & 0 deletions app/models/sac_membership_config.rb
@@ -0,0 +1,10 @@
# frozen_string_literal: true

# Copyright (c) 2024, Schweizer Alpen-Club. This file is part of
# hitobito_sac_cas and licensed under the Affero General Public License version 3
# or later. See the COPYING file at the top-level directory or at
# https://github.com/hitobito/hitobito_sac_cas

class SacMembershipConfig < ApplicationRecord
attr_readonly :valid_from
end
113 changes: 113 additions & 0 deletions app/views/sac_membership_configs/_form.html.haml
@@ -0,0 +1,113 @@
-# Copyright (c) 2024, Schweizer Alpen-Club. This file is part of
-# hitobito_sac_cas and licensed under the Affero General Public License version 3
-# or later. See the COPYING file at the top-level directory or at
-# https://github.com/hitobito/hitobito_sac_cas.
= entry_form do |f|
= field_set_tag do
- if entry.new_record?
= f.labeled_input_field :sac_fee_adult

= field_set_tag(t('sac_membership_configs.form.fees')) do
.sac-field-container
.sac-field-row
.sac-field-column
.sac-field-column
= t('sac_membership_configs.form.membership_adult')
.sac-field-column
= t('sac_membership_configs.form.membership_family')
.sac-field-column
= t('sac_membership_configs.form.membership_youth')
.sac-field-row
.sac-field-column
= t('sac_membership_configs.form.sac_fee')
.sac-field-column
.input-group.input-group-sm
= f.input_field :sac_fee_adult
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :sac_fee_family
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :sac_fee_youth
%span.input-group-text
= t('global.currency')
.sac-field-row
.sac-field-column
= t('sac_membership_configs.form.entry_fee')
.sac-field-column
.input-group.input-group-sm
= f.input_field :entry_fee_adult
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :entry_fee_family
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :entry_fee_youth
%span.input-group-text
= t('global.currency')
.sac-field-row
.sac-field-column
= t('sac_membership_configs.form.hut_solidarity_fee_without_hut')
.sac-field-column
.input-group.input-group-sm
= f.input_field :hut_solidarity_fee_without_hut_adult
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :hut_solidarity_fee_without_hut_family
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :hut_solidarity_fee_without_hut_youth
%span.input-group-text
= t('global.currency')
.sac-field-row
.sac-field-column
= t('sac_membership_configs.form.hut_solidarity_fee_with_hut')
.sac-field-column
.input-group.input-group-sm
= f.input_field :hut_solidarity_fee_with_hut_adult
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :hut_solidarity_fee_with_hut_family
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :hut_solidarity_fee_with_hut_youth
%span.input-group-text
= t('global.currency')
.sac-field-row
.sac-field-column
= t('sac_membership_configs.form.magazine_fee')
.sac-field-column
.input-group.input-group-sm
= f.input_field :magazine_fee_adult
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :magazine_fee_family
%span.input-group-text
= t('global.currency')
.sac-field-column
.input-group.input-group-sm
= f.input_field :magazine_fee_youth
%span.input-group-text
= t('global.currency')

= field_set_tag(t('sac_membership_configs.form.article_numbers')) do
hasdf
58 changes: 58 additions & 0 deletions config/locales/wagon.de.yml
Expand Up @@ -217,6 +217,41 @@ de:
tourenchef_may_edit: Von Tourenchef bearbeitbar
qualification:
finish_at: Bis
sac_membership_config:
valid_from: Gültig ab Jahr
sac_fee_adult: Nationalverbandsbeitrag, Mitgliedschaft Einzel
sac_fee_family: Nationalverbandsbeitrag, Mitgliedschaft Familie
sac_fee_youth: Nationalverbandsbeitrag, Mitgliedschaft Jugend
entry_fee_adult: Eintrittsgebühr, Mitgliedschaft Einzel
entry_fee_family: Eintrittsgebühr, Mitgliedschaft Familie
entry_fee_youth: Eintrittsgebühr, Mitgliedschaft Jugend
hut_solidarity_fee_with_hut_adult: Hüttensolidaritätsbeitrag Sektion mit Hütten, Mitgliedschaft Einzel
hut_solidarity_fee_with_hut_family: Hüttensolidaritätsbeitrag Sektion mit Hütten, Mitgliedschaft Familie
hut_solidarity_fee_with_hut_youth: Hüttensolidaritätsbeitrag Sektion mit Hütten, Mitgliedschaft Jugend
hut_solidarity_fee_without_hut_adult: Hüttensolidaritätsbeitrag Sektion ohne Hütten, Mitgliedschaft Einzel
hut_solidarity_fee_without_hut_family: Hüttensolidaritätsbeitrag Sektion ohne Hütten, Mitgliedschaft Familie
hut_solidarity_fee_without_hut_youth: Hüttensolidaritätsbeitrag Sektion ohne Hütten, Mitgliedschaft Jugend
magazine_fee_adult: Abogebühr SAC Magazin, Mitgliedschaft Einzel
magazine_fee_family: Abogebühr SAC Magazin, Mitgliedschaft Familie
magazine_fee_youth: Abogebühr SAC Magazin, Mitgliedschaft Jugend
service_fee: Dienstleistungsgebühr
magazine_postage_abroad: Porto Ausland SAC Magazin
reduction_amount: Reduktionsbetrag
reduction_required_membership_years: Reduktion ab Mitgliedsjahren
sac_fee_article_number: Nationalverbandsbeitrag, Artikelnummer
sac_entry_fee_article_number: Nationalverbandseintrittsgebühren, Artikelnummer
hut_solidarity_fee_article_number: Hüttensolidaritätsbeitrag, Artikelnummer
magazine_fee_article_number: Abogebühr SAC Magazin, Artikelnummer
section_bulletin_postage_abroad_article: Porto Ausland SAC Magazin, Artikelnummer
service_fee_article_number: Servicegebühr, Artikelnummer
balancing_payment_article_number: Sektionseintrittsgebühren, Artikelnummer
course_fee_article_number: Porto Ausland Sektionsbulletin, Artikelnummer
discount_date_1: Rabattdatum 1
discount_percent_1: Rabattprozent 1
discount_date_2: Rabattdatum 2
discount_percent_2: Rabattprozent 2
discount_date_3: Rabattdatum 3
discount_percent_3: Rabattprozent 3

errors:
messages:
Expand Down Expand Up @@ -259,6 +294,9 @@ de:
external_training:
one: Externe Ausbildung
other: Externe Ausbildungen
sac_membership_config:
one: SAC Mitgliedschafts-Parameter
other: SAC Mitgliedschafts-Parameter

### GROUPS
group/sac_cas:
Expand Down Expand Up @@ -448,6 +486,9 @@ de:
dropdown/people_export:
recipients: Empfänger

dropdown/group_edit:
sac_membership_configs: SAC Mitgliedschafts-Parameter

event:
kinds:
push_down:
Expand Down Expand Up @@ -543,6 +584,7 @@ de:

global:
phone_placeholder: +41 77 123 45 67
currency: CHF

mitglieder_exports:
export_enqueued: "Export wird im Hintergrund gestartet und nach Fertigstellung heruntergeladen."
Expand Down Expand Up @@ -740,6 +782,7 @@ de:
file_name_prefix: SAC-Mitgliederausweis
membership_years: Mitgliederjahre
title: Mitgliederausweis

mounted_attributes:
form_tabs:
group/sac_cas:
Expand All @@ -748,3 +791,18 @@ de:
default: Sektions Attribute
group/ortsgruppe:
default: Ortsgruppen Attribute

sac_membership_configs:
form:
fees: Gebühren
reductions: Reduktionen
discounts: Rabatte für Eintritte innerhalb des Jahres
article_numbers: Artikelnummern Abacus
sac_fee: Nationalverbandsbeitrag
entry_fee: Eintrittsgebühr
hut_solidarity_fee_without_hut: Hüttensolidaritätsbeitrag ohne Hütten
hut_solidarity_fee_with_hut: Hüttensolidaritätsbeitrag mit Hütten
magazine_fee: Abogebühr SAC Magazin
membership_adult: Mitgliedschaft Einzel
membership_family: Mitgliedschaft Familie
membership_youth: Mitgliedschaft Jugend
1 change: 1 addition & 0 deletions config/routes.rb
Expand Up @@ -21,6 +21,7 @@

resources :groups, only: [] do
post 'self_inscription/confirm' => 'groups/self_inscription#confirm'
resources :sac_membership_configs, except: [:show, :destroy]

resources :events, only: [] do
scope module: 'event' do
Expand Down
49 changes: 49 additions & 0 deletions db/migrate/20240502124158_create_sac_membership_configs.rb
@@ -0,0 +1,49 @@
# frozen_string_literal: true

# Copyright (c) 2012-2024, Schweizer Alpen-Club. This file is part of
# hitobito_sac_cas and licensed under the Affero General Public License version 3
# or later. See the COPYING file at the top-level directory or at
# https://github.com/hitobito/hitobito_sac_cas.

class CreateSacMembershipConfigs < ActiveRecord::Migration[6.1]

def change
create_table :sac_membership_configs do |t|
t.integer :valid_from, null: false, length: 4, index: { unique: true }
t.decimal :sac_fee_adult, precision: 5, scale: 2, null: false
t.decimal :sac_fee_family, precision: 5, scale: 2, null: false
t.decimal :sac_fee_youth, precision: 5, scale: 2, null: false
t.decimal :entry_fee_adult, precision: 5, scale: 2, null: false
t.decimal :entry_fee_family, precision: 5, scale: 2, null: false
t.decimal :entry_fee_youth, precision: 5, scale: 2, null: false
t.decimal :hut_solidarity_fee_with_hut_adult, precision: 5, scale: 2, null: false
t.decimal :hut_solidarity_fee_with_hut_family, precision: 5, scale: 2, null: false
t.decimal :hut_solidarity_fee_with_hut_youth, precision: 5, scale: 2, null: false
t.decimal :hut_solidarity_fee_without_hut_adult, precision: 5, scale: 2, null: false
t.decimal :hut_solidarity_fee_without_hut_family, precision: 5, scale: 2, null: false
t.decimal :hut_solidarity_fee_without_hut_youth, precision: 5, scale: 2, null: false
t.decimal :magazine_fee_adult, precision: 5, scale: 2, null: false
t.decimal :magazine_fee_family, precision: 5, scale: 2, null: false
t.decimal :magazine_fee_youth, precision: 5, scale: 2, null: false
t.decimal :service_fee, precision: 5, scale: 2, null: false
t.decimal :magazine_postage_abroad, precision: 5, scale: 2, null: false
t.decimal :reduction_amount, precision: 5, scale: 2, null: false
t.integer :reduction_required_membership_years, null: true
t.string :sac_fee_article_number, null: false
t.string :sac_entry_fee_article_number, null: false
t.string :hut_solidarity_fee_article_number, null: false
t.string :magazine_fee_article_number, null: false
t.string :section_bulletin_postage_abroad_article_number, null: false
t.string :service_fee_article_number, null: false
t.string :balancing_payment_article_number, null: false
t.string :course_fee_article_number, null: false
t.string :discount_date_1, null: true
t.integer :discount_percent_1, null: true, length: 2
t.string :discount_date_2, null: true
t.integer :discount_percent_2, null: true, length: 2
t.string :discount_date_3, null: true
t.integer :discount_percent_3, null: true, length: 2
end
end

end

0 comments on commit 91d5138

Please sign in to comment.