Sylvain
3e4892d3a5
WIP: creating payment schedule workers
...
see TODO in app/workers/payment_schedule*
2020-12-23 16:56:19 +01:00
Sylvain
32b0222da5
save payment schedules PDF to a persistant volume storage
2020-12-22 16:39:37 +01:00
Sylvain
bbf88846dd
refactored Invoice & PaymentSchedule to use inheritance
2020-12-22 14:43:08 +01:00
Sylvain
6fa9780ad5
refactor chainable/footprint protected models to use inheritance
2020-12-22 09:53:41 +01:00
Sylvain
d3a41903cd
WIP: exclude invoice_id from footprint in payment_schedule_item
2020-12-21 17:37:58 +01:00
Sylvain
609d19e5d1
refactored subscription process + renew (update) subscription/ offre free days
2020-12-21 16:12:34 +01:00
Sylvain
40c78974b8
refactoring of reservation:pay_and_save
...
TODO: debug with tests,
refactor subscription:pay_and_save on the same template
2020-12-16 18:33:43 +01:00
Sylvain
908ccf5bab
handle reservations+subscription w/ schedule
...
integration testing for payment schedule
debug reservation process
2020-12-14 17:42:23 +01:00
Sylvain
5941446a72
fixes for card payment
2020-12-02 14:28:41 +01:00
Sylvain
34a9084501
pass payment method to the ruby service
2020-11-23 11:48:44 +01:00
Sylvain
678af0de1f
using stripe api + improved ui + ui to configure schedules reference
...
TODO: as an admin, I can select if payment_method = (stripe || local)
2020-11-16 16:37:40 +01:00
Sylvain
b5504d2342
create stripe subscription with all data
2020-11-12 16:44:55 +01:00
Sylvain
ed5b90cbdc
add stp_product_id to all items that can be scheduled
2020-11-12 12:14:51 +01:00
Sylvain
78847bdb4b
WIP: create subscription on stripe
2020-11-10 17:02:21 +01:00
Sylvain
21bd1312bc
compute payment schedule + basic display
2020-11-03 16:50:11 +01:00
Sylvain
408531d13a
use i18next instead of angular-translate for react components
2020-11-02 11:07:08 +01:00
Sylvain
14091f547e
parse multiple scss files for theme
2020-10-29 16:11:19 +01:00
Sylvain
4f877ab05d
react coponent: plan-card + extracted scss from stylesheet.rb into themes/
2020-10-29 15:53:29 +01:00
Sylvain
106d8be4c8
Merge branch 'dev' into monthly-payment
2020-10-28 12:11:49 +01:00
Sylvain
1699bbf143
[bug] theme primary color is ignored on links
2020-10-28 12:10:25 +01:00
Sylvain
ddd2b252ab
fix caret color
2020-10-28 10:27:59 +01:00
Sylvain
ccd3e93428
fix about link color
2020-10-28 10:03:04 +01:00
Sylvain
44525f9bad
Merge branch 'dev' into monthly-payment
2020-10-28 09:53:28 +01:00
Sylvain
bf76157703
Initialize new plans with default prices for machines & spaces
2020-10-28 09:24:31 +01:00
Sylvain
a9cc0b391b
save products and prices to stripe for each plans
2020-10-27 16:46:38 +01:00
Sylvain
6be51feeb2
save stp_price_id for each plan
2020-10-27 16:03:20 +01:00
Sylvain
840be2c6c0
renamed RepaymentSchedule to PaymentSchedule
2020-10-27 16:02:41 +01:00
Sylvain
52f3bd956f
database structure for payment schedule
2020-10-27 11:32:20 +01:00
Sylvain
2227a59275
[bug] unable to rename a group containing users
2020-10-20 15:52:14 +02:00
Sylvain
b5a4e724e8
[bug] email notification after reservation update have wrong previous date ( #234 )
2020-10-20 15:14:11 +02:00
Sylvain
57b76d156b
Alert before cancelling a reservation that credits will be lost
2020-09-29 12:03:13 +02:00
Sylvain
13bc5334cc
ability to configure until when the events are shown on the home page
2020-09-29 09:39:32 +02:00
Sylvain
14b0b2ac30
class documentation
2020-07-21 19:28:30 +02:00
Sylvain
7bf06ff23e
debug footprints
2020-07-21 19:25:21 +02:00
Sylvain
e644e4894a
using unaccent to build project search index + updated doc
2020-06-30 15:58:39 +02:00
Sylvain
e95b270433
multiples fixes
...
- improved project search
- fix db schema (sql)
- improved doc
- removed es_language_analyzer var (deprecated)
2020-06-24 17:22:38 +02:00
Sylvain
8137418904
improved test for accounting periods
2020-06-24 15:25:17 +02:00
Sylvain
e288f66997
use search index to speed up projects searches
2020-06-23 17:06:59 +02:00
Sylvain
7140571d63
filter & search projets from postgres
2020-06-23 11:19:20 +02:00
Sylvain
1a6cd356bf
WIP: using postgres for full-text search in projects
2020-06-22 16:28:05 +02:00
Sylvain
d83e3a8d26
using gem pg_search
2020-06-22 11:25:35 +02:00
Sylvain
7af6f18973
source for building search engine
2020-06-17 16:56:10 +02:00
Sylvain
a164ec402d
poc using tsvector
2020-06-17 16:49:38 +02:00
Sylvain
40dd39304e
enable/disable statistics module fomr the UI
2020-06-17 12:20:51 +02:00
Sylvain
24155bc009
ability to lock settings from the env vars
2020-06-15 13:20:48 +02:00
Sylvain
42872ab107
configure wallet from UI
2020-06-15 12:44:43 +02:00
Sylvain
f46c78a476
read email_confirmation_required from the UI
2020-06-15 11:57:13 +02:00
Sylvain
48bcf0b838
configure invoices prefix from the DB
2020-06-15 10:58:15 +02:00
Sylvain
78518e17fb
read stripe_currency from the UI
...
We prevent the currency from being changed if any stripe payment was made, because a stripe user cannot made pay with different currencies. If we try to charge a user with a different currency than the currency he used for a previous payment, this will fail; so we must prevent this case
2020-06-10 16:37:11 +02:00
Sylvain
4b8504f531
fix tests
2020-06-10 11:52:54 +02:00
Sylvain
82d6677cff
read stripe_api_key from db
2020-06-10 11:33:03 +02:00
Sylvain
dbda82ac9b
notify after members sync on stripe
2020-06-09 15:06:46 +02:00
Sylvain
d5939a9de5
set the stripe keys from the UI
2020-06-09 13:09:31 +02:00
Sylvain
06b5da9df8
configure online payment from the UI
2020-06-08 17:42:59 +02:00
Sylvain
b44a8da73b
set openlab_default from the UI
2020-06-08 16:15:44 +02:00
Sylvain
f78eb10c75
use openlab_app_secret from db w/ openlab_ruby gem
2020-06-08 15:17:56 +02:00
Sylvain
88f2fb3749
secure the settings API (read) + read the openlab settings from the db
2020-06-08 15:08:07 +02:00
Sylvain
db8de18bd4
set openlab-projects id & secret from the UI
2020-06-08 11:38:49 +02:00
Sylvain
5c152412db
test mime type of a file
...
use marcel to test mime types
updated mimemagic
2020-06-03 16:25:13 +02:00
Sylvain
ebe602ad1c
WIP: enforce mime type checking for uploads
2020-06-02 19:18:57 +02:00
Sylvain
45013be950
configure default_host & default_protocol from env
...
reverts 478a6c40
(partially) & b2434864
2020-06-02 18:29:24 +02:00
Sylvain
9a0f36c245
configure disqus_shortname from the UI
2020-06-01 18:31:43 +02:00
Sylvain
478a6c409d
define default_protocol & default_host from the UI + fix email_from + various minor fixes
2020-06-01 17:32:32 +02:00
Sylvain
0617e4cd26
configure default_mail_from from the UI
2020-06-01 12:15:16 +02:00
Sylvain
434c211ccf
configure the features tour display mode from the UI
2020-05-27 18:49:53 +02:00
Sylvain
0d211e2e31
configure google recaptcha from UI
2020-05-27 16:35:30 +02:00
Sylvain
c3846e7080
configure twitter analytics from the UI
2020-05-27 15:39:39 +02:00
Sylvain
628a0f3bc3
configure facebook_app_id from the UI
2020-05-27 12:29:51 +02:00
Sylvain
2d628d8826
disable the invoicing module from the UI config panel
2020-05-26 18:07:07 +02:00
Sylvain
537743a740
configure the plans module from the admin UI
2020-05-26 15:39:28 +02:00
Sylvain
6cc6bba7ce
refactored app to gather spaces module status from the settings
2020-05-26 13:59:40 +02:00
Sylvain
fd93093f0d
UI to configure the spaces module
2020-05-26 10:53:49 +02:00
Sylvain
acefc325f6
configure events_in_calendar form the UI panel
2020-05-25 17:36:53 +02:00
Sylvain
ba4c39ca99
use slot duration from the db setting
2020-05-25 12:55:01 +02:00
Sylvain
a63340188b
configure default slot duration from settings panel
2020-05-25 12:55:01 +02:00
Sylvain
ddce7f516a
configuration of book concurrent slots through the settings interface
2020-05-25 12:55:00 +02:00
Sylvain
419605e551
configuration of google analytics tracking ID through the settings interface
2020-05-25 12:55:00 +02:00
Sylvain
13bcd9a1f8
use phoneRequired from settings instead of env
2020-05-25 12:54:19 +02:00
Sylvain
f80eb230ca
refactored code to use Setting.get
2020-05-25 12:54:19 +02:00
Sylvain
654d4b1cb4
setting: phone_required
2020-05-25 12:54:19 +02:00
Sylvain
18e2b032ae
fix import users from csv
2020-05-19 11:45:51 +02:00
Sylvain
2b95c043e3
Removed dependency to has_secure_token to fix warnings about already initialized constant
2020-05-18 17:45:01 +02:00
Sylvain
fdc2f60ff5
[bug] when a new account is created through the sign-up modal, the role is not reported in the StatisticProfile ( #196 )
...
Also: if a member was deleted the /api/members/mapping will raise an error
2020-05-18 16:23:53 +02:00
Sylvain
14c8cbbf57
typos
2020-05-11 17:17:37 +02:00
Sylvain
9f8fb1a95c
fix tests + fix price.compute flor slots
2020-05-11 13:52:27 +02:00
Sylvain
1fdea63828
correct some errors due to Price.compute refactoring
2020-05-11 10:56:23 +02:00
Sylvain
06502cde33
[bug] accounting periods totals are wrong for periods closed after 2019-08-01
2020-05-11 10:10:52 +02:00
Sylvain
be23cf27c3
use Price.compute to generate invoice items
2020-05-06 12:43:47 +02:00
Sylvain
19de8ca319
fix: manager can offer slot to other users
2020-05-06 09:58:15 +02:00
Sylvain
e6f8a34aa4
[ongoing] compute per based on a hourly rate
2020-05-05 17:56:47 +02:00
Sylvain
34935cbc35
decrease higher limit for black text on primary color
2020-05-05 16:20:44 +02:00
Sylvain
2d8df2c1cd
Ability to promote a user to a higher role (member > manager > admin)
2020-05-05 11:28:04 +02:00
Sylvain
06a5bff084
[ongoing] change user role
2020-05-04 18:32:25 +02:00
Sylvain
3319e68526
Auto-adjusts text colors based on the selected theme colors
2020-05-04 13:20:57 +02:00
Sylvain
29e7ac2f08
[bug] background image of the profile is not shown and wrong menu hover color
2020-05-04 12:10:13 +02:00
Sylvain
7640704568
fix payment method on invoices operated by a manager
2020-05-04 11:36:06 +02:00
Sylvain
6aa7ba89e8
manager's notifications
2020-04-29 15:34:30 +02:00
Sylvain
35ce577651
[bug] subscription page shows the groups without any active plans
...
[bug] cart price inconsistently updated after a subscription
[feature] plans page for managers
2020-04-29 10:57:32 +02:00
Sylvain
3e177b5177
managers events views
2020-04-28 12:48:03 +02:00
Sylvain
2da644ecd5
[bug] unable to delete an unreserved event
2020-04-28 10:05:28 +02:00
Sylvain
3624bee057
{bug] unable to create events or trainings that are not multiples of SLOT_DURATION
2020-04-28 09:45:12 +02:00
Sylvain
570672c5db
[bug] unable to change group if the previous was deactivated
2020-04-28 09:21:33 +02:00
Sylvain
69c8d7c678
manager can change existing reservations
2020-04-27 12:58:55 +02:00
Sylvain
5312c13d3f
[manager] manage agenda + book machines for himself&others
2020-04-27 12:12:29 +02:00
Sylvain
c30ae8179e
fix groups and tags in manager creation + helpers to get users w/ role partner|manager
2020-04-22 10:46:46 +02:00
Sylvain
ff75a96ecc
Ability to define, per availability, a custom duration for the reservation slots
2020-04-15 18:08:02 +02:00
Sylvain
de9c224a92
improved version check
...
- use referer from client when available
- save uuid returned by hub
- send uuid to hub on version check
- check the version on each startup to prevent wrong sync
- also: do not save a setting on API update if it has not changed
2020-04-07 17:53:19 +02:00
Sylvain
3917d6042c
[bug] no statistics for subscriptions ( #196 )
...
+ [bug] issing translation for subscriptions statistics > duration
2020-04-01 17:25:55 +02:00
Sylvain
f9e18ca580
removed dependency to discoutinued protected_attributes + fixed auth_provider
2020-03-30 16:17:32 +02:00
Sylvain
02c1014412
class documentation
2020-03-30 11:33:12 +02:00
Sylvain
d33c6c0d30
documented all models until StatisticField + fixes halting callback chains via returning false + improved some code
2020-03-25 17:45:53 +01:00
Sylvain
68b8827499
removed unused PlanImage
2020-03-25 16:49:13 +01:00
Sylvain
6b66d601e1
inherit models from ApplicationRecord
2020-03-25 12:35:09 +01:00
Sylvain
df8ff77597
fix migrations for rails 5 + use maildev instead of mailcatcher + fix tests script
2020-03-25 12:35:08 +01:00
Du Peng
9ca9425ef4
update to rails 5.0.7.2
2020-03-25 12:35:07 +01:00
Sylvain
0b341af1ed
[bug] unable to create new availabilities if SLOT_DURATION is not defined
2020-03-11 11:31:06 +01:00
Sylvain
978c44f55f
fix an issue: shift in subscription end date when over DST
2020-03-04 11:43:12 +01:00
Sylvain
a44bf85014
Merge branch 'slot_is_only_subscriptions' into dev
2020-03-02 16:27:26 +01:00
Sylvain
d833f6d812
harmonize Fab-manager trademark syntax
2020-02-26 10:19:43 +01:00
Du Peng
096a658bac
add a validator to check reservation's slot is or not restrict for subscriptions
2020-02-11 13:22:20 +01:00
Du Peng
74cc69d1bd
Ability to configure reservation slot restrict for plans
2020-02-07 17:37:00 +01:00
Sylvain
656a603d6c
customize home page css
2020-01-27 17:10:29 +01:00
Sylvain
37c90b1d54
ruby syntax
2020-01-22 14:34:45 +01:00
Sylvain
b85c7ac00b
admin set its customized html template for the home page & can reset it to factory value
2020-01-22 11:53:40 +01:00
Sylvain
15ab3c1305
Ability to customize the title of the link to the about page
2020-01-21 16:16:12 +01:00
Du Peng
fe387cbe3c
Merge branch 'twitter' into dev
2020-01-15 12:40:01 +01:00
Du Peng
db29673a4c
remove twitter api for get latest tweet
2020-01-15 12:34:51 +01:00
Sylvain
059096c2dd
privacy option for fab-analytics
2020-01-15 10:46:04 +01:00
Sylvain
bb48a13f83
health endpoint & automated version check
2020-01-14 14:33:00 +01:00
Sylvain
64764e5498
check version on hub & [ongoing] health endpoint
2020-01-13 17:05:53 +01:00
Sylvain
1c4f144b8d
Merge branch 'members-filters' into dev
2020-01-07 10:44:55 +01:00
Sylvain
f778ee9016
fix syntax + add missing translations
2020-01-07 10:44:29 +01:00
Sylvain
b6ee4e92a4
change falsy value + updated changelog
2020-01-07 10:34:12 +01:00
Nicolas Florentin
62c979cfc0
members filters, translations for other languages are still needed
2019-12-20 15:47:42 +01:00
Nicolas Florentin
0a3a6d034a
env variable USER_CONFIRMATION_NEEDED_TO_SIGN_IN can force user to confirm his account to sign in
2019-12-18 16:02:47 +01:00
Sylvain
6aa3c0caeb
Notify all admins on the creation of a refund invoice
2019-12-09 11:55:31 +01:00
Sylvain
60755a2c2a
Merge remote-tracking branch 'origin/fix-time-now' into dev
2019-12-03 15:51:22 +01:00
Sylvain
11e74c6859
Merge branch 'ics' into dev
2019-12-03 15:30:28 +01:00
Sylvain
64fe68b2b0
icalendar source sync: create/update/delete ical events
2019-12-03 12:16:07 +01:00
Sylvain
122ff54cd8
fix colors in ics imports
2019-12-03 10:17:29 +01:00
Sylvain
22be9f6a08
display external calendars list in public calendar + pull availabilities
2019-12-02 16:49:20 +01:00
Sylvain
cca6b14f58
import events asyncronously from icalendar
2019-12-02 15:53:24 +01:00
Nicolas Florentin
db41e846dd
uses DateTime#current instead of Time.now in tests
2019-12-02 15:29:05 +01:00
Nicolas Florentin
b17bcfde86
comment model slot.rb
2019-12-02 12:39:20 +01:00
Nicolas Florentin
6ff6c71060
rm dead code Slot#can_be_modified?
2019-12-02 12:32:52 +01:00
Nicolas Florentin
77cf8c8218
replaces almost all Time.now by DateTime.current
2019-12-02 11:57:25 +01:00
Sylvain
baf8cfb487
iCalendar server api & db model
2019-11-27 17:05:19 +01:00
Sylvain
48b811d2b5
Added freeCAD files as default allowed extensions
...
also: refactored some ruby code
2019-11-25 16:12:23 +01:00
Sylvain
1182822d8b
show correct seats nb in canceled reservation
2019-11-25 10:45:54 +01:00
Sylvain
bbd613f2a5
compute right nb of free seats for event reservation
...
also: copy nb_total_places to n+1 instances when creating recurrent
availabilities
2019-11-25 10:30:12 +01:00
Sylvain
cabe2e5604
update free places after cancel event reservation
2019-11-20 17:06:42 +01:00
Sylvain
b725a5a071
Merge branch 'cancel' into dev
2019-11-20 10:27:56 +01:00
Sylvain
ad928bd4e6
ability to set phone number optional or required
...
also: show stars on required fields in new admin form
2019-11-19 11:44:32 +01:00
Sylvain
a60a39ff9e
[ongoing] create multiple availabilities according to UI
2019-11-13 12:13:22 +01:00
Sylvain
e8930924e4
[bug] do not display each days in invoices for multiple days event reservation
2019-10-16 16:11:37 +02:00
Sylvain
19a125bd67
[bug] accounting export: on subscription + reservation invoice, the subscription item is exported twice
2019-10-07 12:08:08 +02:00
Sylvain
193e81e711
Merge branch 'uvsq' into dev
2019-09-30 15:34:21 +02:00
Sylvain
0d3cc0fe40
[feature] Ability to disable invoices generation and interfaces
2019-09-30 15:29:20 +02:00
Sylvain
ff5de97c92
import new users from CSV and view results in app
...
TODO:
- update users though CSV
2019-09-26 17:05:57 +02:00
Sylvain
4deaf1f75a
[ongoing] import members from csv
2019-09-25 16:37:42 +02:00
Sylvain
a532efd198
upload csv file to the server through the API and save it on the disk
2019-09-24 17:42:50 +02:00
Sylvain
ede53ad761
[feature] Ability to set project's CAO attachement maximum upload size
2019-09-24 16:40:38 +02:00
Sylvain
8eda1e673f
Merge remote-tracking branch 'origin/hotfixes' into dev
2019-09-24 14:43:14 +02:00
Sylvain
f75633e64e
[bug] create a plan does not set its name
2019-09-24 11:41:07 +02:00
Nicolas Florentin
401df4cb77
delay_for does not exist anymore in sidekiq 5
2019-09-20 15:01:27 +02:00
Sylvain
de1cc2013a
[bug] after disabling a group, its associated plans are hidden from the interface
...
+ validate server-side that there's no more user in the group to disable
2019-09-19 15:34:21 +02:00
Sylvain
a7dc3b2431
factorized invoice reference & order number code
2019-09-19 14:59:22 +02:00
Sylvain
2d6f5c3e81
wallet client line in accounting export + factorized accountingExportService
2019-09-19 13:57:33 +02:00
Sylvain
7d26932f6c
configure accounting codes & labels for wallet clients and other means clients
2019-09-19 11:51:14 +02:00
Sylvain
cd2c8488c2
Compute the VAT per item in each invoices, instead of globally
2019-09-18 17:14:59 +02:00
Sylvain
02c7cb801f
factorized footprint computation
2019-09-18 15:09:14 +02:00
Sylvain
30e7ce8377
[bug] invoices with total = 0, are marked as paid on site even if paid by card
2019-09-17 15:16:11 +02:00
Sylvain
1fa36d4029
renamed avoir_mode to payment_method
2019-09-17 14:48:06 +02:00
Sylvain
3348539fdf
export labels: user name + reference + summary, only on client line. Also: handling new export parameters (decimal separator, label length, export zeros)
2019-09-17 12:35:34 +02:00
Sylvain
224b0d6dee
Merge branch 'sca' into dev
2019-09-12 12:53:56 +02:00
Sylvain
78e6392f60
do not display invoice update logs in test mode + updated reservations fixtures w/o stp_invoice_id column + helper script to run tests
2019-09-11 14:29:35 +02:00
Sylvain
3320ee103b
Log changes in Invoices or InvoiceItems records for better handling of accounting certification issues
2019-09-11 12:22:14 +02:00
Sylvain
f60d19fa27
allow reservations & subscriptions at price of zero
2019-09-11 11:51:04 +02:00
Sylvain
75f483a7a6
compute subscription price server-side for payments
2019-09-11 10:31:22 +02:00
Sylvain
ac0489a496
[bug] wallet usage is noted on subscription invoices even if wallet was not used + use payment confirm API for subscriptions only (sca)
2019-09-10 17:57:46 +02:00
Sylvain
4d0ac9b3ca
using stp_payment_intent_id instead of stp_invoice_id on new invoices
2019-09-10 16:45:45 +02:00
Sylvain
a96050a2e9
refactor payment process for sca
2019-09-10 11:46:14 +02:00
Sylvain
e9e27663cd
quick coding rules checking with rubocop
2019-09-09 18:04:31 +02:00
Nicolas Florentin
e94cf46fa4
ongoing work on sca stripe
2019-09-09 17:37:54 +02:00
Sylvain
61c1d09ac8
[bug] use vat history while regenerating invoices
2019-08-01 11:29:45 +02:00
Sylvain
38ab06840e
consider vat history in accounting export + [bug] use vat history while regenerating invoices
2019-08-01 11:26:40 +02:00
Sylvain
a9ea4057f3
interface to customize accounting codes and labels
2019-07-30 16:06:35 +02:00
Sylvain
f772bc3509
api endpoint and worker to export accounting data
2019-07-30 11:43:51 +02:00
Sylvain
ab295f064d
service to export invoices into a given period to CSV lines for an accounting sofware
2019-07-29 17:51:53 +02:00
Sylvain
a778b1063a
enhance ruby syntax
2019-07-29 12:17:57 +02:00
Sylvain
b77fde2506
[bug] OpenlabWorker is crashing with message undefined method profile for StatisticProfile
2019-07-10 10:58:51 +02:00
Sylvain
b0b2e8d3a9
use an async worker to notify users about policy update
2019-06-17 10:01:59 +02:00
Sylvain
f3c433883d
[bug] canceled reservation are not removed from statistics ( fix #133 )
2019-06-13 16:29:12 +02:00
Sylvain
249e59bb2a
get user consent about cookies
2019-06-13 11:28:55 +02:00
Sylvain
a53c6e80e7
move invoice->operator to invoicing_profile + minor fixes to handle user deletion
2019-06-12 12:22:38 +02:00
Sylvain
86ded2b8d2
[ongoing] fixes for invoices pdf files
2019-06-11 16:56:11 +02:00
Sylvain
37b9e3da60
link statistic profile to invoices
2019-06-11 10:02:48 +02:00
Sylvain
cfd33c3a52
migrate projects to statistic_profile
2019-06-06 16:34:53 +02:00
Sylvain
35da65b686
change statistic_service to use statistic_profile + use raw sql in migrations
2019-06-06 13:58:49 +02:00
Sylvain
fe2a6f7120
migrate trainings to statistic_profile and adjust code
2019-06-06 12:00:21 +02:00