diff --git a/.gitignore b/.gitignore index 79b4139ed..c9cb7821d 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,9 @@ # PDF invoices /invoices/* +# PDF Payment Schedules +/payment_schedules/* + # XLSX exports /exports/* diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b644c8d2..c40518921 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,8 +10,10 @@ - [TODO DEPLOY] `rails fablab:maintenance:rebuild_stylesheet` - [TODO DEPLOY] `rails fablab:stripe:set_product_id` - [TODO DEPLOY] `rails fablab:setup:add_schedule_reference` +- [TODO DEPLOY] `rails db:seed` - [TODO DEPLOY] add the `INTL_LOCALE` environment variable (see [doc/environment.md](doc/environment.md#INTL_LOCALE) for configuration details) - [TODO DEPLOY] add the `INTL_CURRENCY` environment variable (see [doc/environment.md](doc/environment.md#INTL_CURRENCY) for configuration details) +- [TODO DEPLOY] `\curl -sSL https://raw.githubusercontent.com/sleede/fab-manager/master/scripts/mount-payment-schedules.sh | bash` ## v4.6.5 2020 December 07 - Fix a bug: unable to run the upgrade script with docker-compose >= v1.19 diff --git a/Dockerfile b/Dockerfile index bf24df5e8..741dae783 100644 --- a/Dockerfile +++ b/Dockerfile @@ -58,6 +58,7 @@ RUN apk del .build-deps && \ RUN mkdir -p /usr/src/app && \ mkdir -p /usr/src/app/config && \ mkdir -p /usr/src/app/invoices && \ + mkdir -p /usr/src/app/payment_schedules && \ mkdir -p /usr/src/app/exports && \ mkdir -p /usr/src/app/imports && \ mkdir -p /usr/src/app/log && \ @@ -72,6 +73,7 @@ COPY . /usr/src/app # Volumes VOLUME /usr/src/app/invoices +VOLUME /usr/src/app/payment_schedules VOLUME /usr/src/app/exports VOLUME /usr/src/app/imports VOLUME /usr/src/app/public diff --git a/app/models/payment_schedule.rb b/app/models/payment_schedule.rb index ceea28293..95a19dca5 100644 --- a/app/models/payment_schedule.rb +++ b/app/models/payment_schedule.rb @@ -28,13 +28,13 @@ class PaymentSchedule < PaymentDocument end def filename - prefix = Setting.find_by(name: 'invoice_prefix').value_at(created_at) - prefix ||= if created_at < Setting.find_by(name: 'invoice_prefix').history_values.order(created_at: :asc).limit(1).first.created_at - Setting.find_by(name: 'invoice_prefix').history_values.order(created_at: :asc).limit(1).first + prefix = Setting.find_by(name: 'payment_schedule_prefix').value_at(created_at) + prefix ||= if created_at < Setting.find_by(name: 'payment_schedule_prefix').first_update + Setting.find_by(name: 'payment_schedule_prefix').first_value else - Setting.find_by(name: 'invoice_prefix')..history_values.order(created_at: :desc).limit(1).first + Setting.get('payment_schedule_prefix') end - "#{prefix.value}-#{id}_#{created_at.strftime('%d%m%Y')}.pdf" + "#{prefix}-#{id}_#{created_at.strftime('%d%m%Y')}.pdf" end ## diff --git a/app/models/setting.rb b/app/models/setting.rb index 9734d6cec..0f1b597e6 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -106,7 +106,8 @@ class Setting < ApplicationRecord confirmation_required wallet_module statistics_module - upcoming_events_shown] } + upcoming_events_shown + payment_schedule_prefix] } # WARNING: when adding a new key, you may also want to add it in app/policies/setting_policy.rb#public_whitelist def value diff --git a/db/seeds.rb b/db/seeds.rb index 8691ba600..5c81e65d0 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -883,6 +883,8 @@ Setting.set('stripe_currency', 'EUR') unless Setting.find_by(name: 'stripe_curre Setting.set('invoice_prefix', 'FabManager_invoice') unless Setting.find_by(name: 'invoice_prefix').try(:value) +Setting.set('payment_schedule_prefix', 'FabManager_paymentSchedule') unless Setting.find_by(name: 'payment_schedule_prefix').try(:value) + Setting.set('confirmation_required', false) unless Setting.find_by(name: 'confirmation_required').try(:value) Setting.set('wallet_module', true) unless Setting.find_by(name: 'wallet_module').try(:value) diff --git a/scripts/mount-payment-schedules.sh b/scripts/mount-payment-schedules.sh new file mode 100644 index 000000000..cf249f637 --- /dev/null +++ b/scripts/mount-payment-schedules.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +yq() { + docker run --rm -i -v "${PWD}:/workdir" mikefarah/yq yq "$@" +} + +config() +{ + echo -ne "Checking user... " + if [[ "$(whoami)" != "root" ]] && ! groups | grep docker + then + echo "Please add your current user to the docker group OR run this script as root." + echo "current user is not allowed to use docker, exiting..." + exit 1 + fi + if ! command -v awk || ! [[ $(awk -W version) =~ ^GNU ]] + then + echo "Please install GNU Awk before running this script." + echo "gawk was not found, exiting..." + exit 1 + fi + SERVICE="$(yq r docker-compose.yml --printMode p 'services.*(.==sleede/fab-manager*)' | awk 'BEGIN { FS = "." } ; {print $2}')" +} + +add_mount() +{ + # shellcheck disable=SC2016 + # we don't want to expand ${PWD} + yq w docker-compose.yml "services.$SERVICE.volumes[+]" '- ${PWD}/payment_schedules:/usr/src/app/payment_schedules' +} + +proceed() +{ + config + add_mount +} + +proceed "$@" diff --git a/setup/docker-compose.yml b/setup/docker-compose.yml index 29843127d..8ebbe0654 100644 --- a/setup/docker-compose.yml +++ b/setup/docker-compose.yml @@ -11,6 +11,7 @@ services: - ${PWD}/public/packs:/usr/src/app/public/packs - ${PWD}/public/uploads:/usr/src/app/public/uploads - ${PWD}/invoices:/usr/src/app/invoices + - ${PWD}/payment_schedules:/usr/src/app/payment_schedules - ${PWD}/exports:/usr/src/app/exports - ${PWD}/imports:/usr/src/app/imports - ${PWD}/log:/var/log/supervisor