Commit Graph

937 Commits

Author SHA1 Message Date
Yohann D'ANELLO 2fc13e5418 Edit the wiki after an activity update iff the wiki password is defined, and don't run the script asynchronous with a SQLite database 2020-09-05 00:47:30 +02:00
Yohann D'ANELLO 2e80233cbc Change debug option to "print stdout" / "edit wiki" in the Refresh activities script 2020-09-05 00:45:14 +02:00
Yohann D'ANELLO 0f47412c38 Fix Ansible script for production 2020-09-04 22:37:18 +02:00
Yohann D'ANELLO 4ddd763886 Test activity app 2020-09-04 21:46:40 +02:00
Yohann D'ANELLO 6d1b75b9b6 Fix linebreaks in ICS file 2020-09-04 19:24:48 +02:00
Yohann D'ANELLO 70e1a611dd Export activites as an ICS Calendar 2020-09-04 18:36:20 +02:00
Yohann D'ANELLO 5c7fe716ad Fix JSON 2020-09-04 16:43:57 +02:00
Yohann D'ANELLO 9b4923fc04 Fix some permissions, grant temporary all treasurers to make transactions from anyone to anyone while a better system is not implemented 2020-09-04 16:37:17 +02:00
Yohann D'ANELLO c93c81861d Users can change their password, fix #59 2020-09-04 16:28:50 +02:00
Yohann D'ANELLO f71fb1fa81 Use pre-defined queryset by default in API views 2020-09-04 16:02:42 +02:00
Yohann D'ANELLO c03c18e93a Test and cover treasury app 2020-09-04 15:53:00 +02:00
Alexandre Iooss b6847415b5 Remove unused imports in tests 2020-09-04 07:53:31 +02:00
Pierre-antoine Comby 43fffdf56f Merge branch 'traduction' into beta 2020-09-03 23:48:39 +02:00
Alexandre Iooss d29e1d69d1 Format api viewsets 2020-09-03 21:47:08 +02:00
Alexandre Iooss ff187581c9 Remove useless blank lines and spaces in api app 2020-09-03 21:21:19 +02:00
Yohann D'ANELLO f02efd3b39 100% coverage on registration app 2020-09-03 20:03:40 +02:00
Pierre-antoine Comby f7f6f053f7 Format date to ISO standard 2020-09-03 14:33:26 +02:00
Yohann D'ANELLO fed9567522 Force line breaks on transactions reason in history, but don't wrap dates or amounts 2020-09-02 23:49:10 +02:00
Alexandre Iooss 7bdf5a4366 Update picture path in member test 2020-09-02 23:25:32 +02:00
Alexandre Iooss be6cf93cdb Move default profile picture in member app 2020-09-02 23:08:40 +02:00
Yohann D'ANELLO bf7f5b9cd6 Test and cover fully member app 2020-09-02 22:54:01 +02:00
Yohann D'ANELLO 1b8cb7abb0 Send user id and group id in Docker console 2020-09-02 22:53:43 +02:00
Pierre-antoine Comby 6a2b46be72 make API token button nicer 2020-09-02 19:16:08 +02:00
Pierre-antoine Comby 4da5c41f40 move viewsets and serializers out of urls.py 2020-09-02 19:00:04 +02:00
Yohann D'ANELLO 8db9e92986 Sqlite does not support order by in subqueries 2020-09-02 18:01:41 +02:00
Pierre-antoine Comby 3e42f4fffb superusers at creation gets automatically valid registration 2020-09-02 17:22:06 +02:00
Yohann D'ANELLO cc5f04e2b3 Add script to launch a Docker bash easily 2020-09-02 15:26:57 +02:00
Yohann D'ANELLO 980032bfbf Remove ltablex and tabularx TeX depency 2020-09-02 12:23:45 +02:00
Yohann D'ANELLO d76aa3fec9 Some table accessors weren't updated 2020-09-01 19:04:35 +02:00
Yohann D'ANELLO 361ea8cad3 Update Django Tables 2, change accessor from dot to __ 2020-09-01 17:58:58 +02:00
erdnaxe 08defd84e6 Merge branch 'debian_deps' into 'beta'
Debian deps

See merge request bde/nk20!103
2020-09-01 16:09:00 +02:00
Yohann D'ANELLO 7c9287e387 Test and cover note app 2020-09-01 15:54:56 +02:00
Yohann D'ANELLO c6abad107a RecurrentTransaction has no longer a category 2020-09-01 15:54:35 +02:00
Yohann D'ANELLO 81e418e17e Use DateTimeField instead of Field in Transaction search form 2020-09-01 15:53:56 +02:00
Yohann D'ANELLO 1977e403e3 History tables are not orderable 2020-09-01 15:52:54 +02:00
Yohann D'ANELLO eaf256b1b6 Fix mails when the user or the club has a negative balance 2020-09-01 15:52:27 +02:00
Yohann D'ANELLO 2b70a05a9e Remove useless category field in RecurrentTransaction (that is the category of the template) 2020-09-01 15:51:47 +02:00
Alexandre Iooss 5feb23ad51 Use Debian font awesome 2020-09-01 14:33:38 +02:00
Alexandre Iooss ff7e954652 Add missing card on button edit 2020-09-01 10:47:51 +02:00
Alexandre Iooss 534831f380 Use buttons in profile page 2020-09-01 10:30:47 +02:00
Alexandre Iooss dd9ca315fa Clean up templates header 2020-09-01 10:20:16 +02:00
Alexandre Iooss d9e003a8f4 Remove contenttitle 2020-09-01 10:13:05 +02:00
erdnaxe dbca5db7d7 Merge branch 'front_erdnaxe' into 'beta'
Front erdnaxe

See merge request bde/nk20!101
2020-09-01 10:07:25 +02:00
Alexandre Iooss b787c8cfe2 Do not make long alias break layout 2020-09-01 09:56:19 +02:00
Yohann D'ANELLO e0c1a5f590 Move highlighted buttons under the note selector 2020-09-01 09:46:56 +02:00
Alexandre Iooss e8dcf295ad Make outline button have a background 2020-09-01 09:46:33 +02:00
Yohann D'ANELLO 5642c268e9 Move transfer type selector in credit/debit mode 2020-08-31 23:06:21 +02:00
Yohann D'ANELLO ee26850e34 Add a line to describe superusers, remove useless roles in rights table 2020-08-31 21:49:02 +02:00
Yohann D'ANELLO 08c8792aed Fix alias deletion 2020-08-31 21:32:45 +02:00
Yohann D'ANELLO a9da4a38e1 Order superusers by last name 2020-08-31 21:15:09 +02:00
Yohann D'ANELLO b8c1cfba40 Display superusers in rights list 2020-08-31 21:11:00 +02:00
Yohann D'ANELLO 5e65e2d74a Add "Lock note" feature 2020-08-31 20:15:48 +02:00
Yohann D'ANELLO 0c753c3288 Prevent also club owners when the note balance is negative 2020-08-31 16:13:26 +02:00
Yohann D'ANELLO 1bbe7df797 API app must have no dependency 2020-08-31 00:49:41 +02:00
Yohann D'ANELLO abbe74cc55 Add activity type "Other" 2020-08-31 00:20:09 +02:00
Yohann D'ANELLO 8744455cbe Add placeholders in activity form 2020-08-31 00:15:02 +02:00
Yohann D'ANELLO 56c41258b9 Highlight non-validated activities 2020-08-30 23:54:54 +02:00
Yohann D'ANELLO 48eb0749e0 Users can create a past activity 2020-08-30 23:14:57 +02:00
Yohann D'ANELLO 8ac551e1bc Hide activity creater if the user is not able to validate it 2020-08-30 23:10:41 +02:00
Yohann D'ANELLO 805ceda249 Don't display the alias create form if the user can't create anyone 2020-08-30 23:06:51 +02:00
Yohann D'ANELLO a9258c332a Order note research results: match first aliases then normalized names 2020-08-30 22:33:59 +02:00
Yohann D'ANELLO ca7f4791ed Preserve dashes in Alias normalisation 2020-08-30 17:28:36 +02:00
Yohann D'ANELLO 7d539d44e5 Display form error when a permission is missing rather than display a 403 page 2020-08-30 16:23:55 +02:00
Yohann D'ANELLO 227cb2a801 Add light background to "Gift/Transfer" buttons 2020-08-30 15:49:06 +02:00
Yohann D'ANELLO 374e6ed7f8 💚 Fix CI 2020-08-30 11:59:10 +02:00
Yohann D'ANELLO c5f40e0952 🐛 Fix entry page view 2020-08-29 23:06:50 +02:00
Alexandre Iooss 4cb162de87 Card for wei templates 2020-08-25 18:36:49 +02:00
Alexandre Iooss bca301700d Cards for all treasury 2020-08-25 18:10:21 +02:00
Alexandre Iooss 22a0af640e Cards for activity templates 2020-08-25 17:39:30 +02:00
erdnaxe 93e5e4c8cd Merge branch 'morefront' into 'beta'
Do not list alias on profile page

See merge request bde/nk20!99
2020-08-25 16:44:55 +02:00
Alexandre Iooss 1fd37bb1ce Smaller membership renew btn 2020-08-25 16:44:01 +02:00
Alexandre Iooss e3785e11f1 Cards everywhere in member app 2020-08-25 16:30:02 +02:00
Alexandre Iooss 2e659c63cd Member templates inherit from member/base.html 2020-08-25 15:39:57 +02:00
Alexandre Iooss 63dc184ce4 Do not list alias on profile page 2020-08-25 15:05:50 +02:00
Yohann D'ANELLO b25935e579 When data is imported from the NK15, prevent users whenever some aliases are deleted 2020-08-24 12:41:51 +02:00
Yohann D'ANELLO 550242226e 🎨 Normalize - to _ since these characters are used a lot 2020-08-24 11:54:00 +02:00
Alexandre Iooss e14c8734c2 Template formating on member app 2020-08-23 14:21:31 +02:00
Alexandre Iooss 44b7fe8f52 List aliases on profile page 2020-08-23 12:07:04 +02:00
Alexandre Iooss cbc3e39bd6 Create base template for member and wei 2020-08-23 10:06:16 +02:00
Alexandre Iooss 1c16d6ef18 Use block.parent to extend content 2020-08-23 09:56:42 +02:00
Alexandre Iooss 0ba77fb8f0 Make alias form a bit more HTML friendly 2020-08-23 00:33:36 +02:00
Alexandre Iooss 342d3910c7 Set fluid container on parent template 2020-08-23 00:03:10 +02:00
Alexandre Iooss 2c1cf148fa Remove alias_update.html 2020-08-22 23:55:22 +02:00
Alexandre Iooss 196f796570 Move alias.js to local static 2020-08-22 23:54:58 +02:00
Alexandre Iooss 8691421ce3 Change cursor on select 2020-08-22 23:23:44 +02:00
Alexandre Iooss 9cad8fcc65 Simplify future user search 2020-08-22 10:13:48 +02:00
Alexandre Iooss 891955cedf Cards for all rights template 2020-08-22 10:01:22 +02:00
Alexandre Iooss 8465b24d7d Use base search for club list 2020-08-21 23:20:45 +02:00
Alexandre Iooss aa98c4848d Create base template for search page 2020-08-21 23:11:25 +02:00
Alexandre Iooss 83d2c18d1e Debounce user search 2020-08-21 19:12:28 +02:00
Alexandre Iooss 5ea1eed76d Password reset use cards 2020-08-21 18:34:20 +02:00
Alexandre Iooss a3af2b0d9a Hide login select arrow on firefox 2020-08-21 17:52:10 +02:00
Alexandre Iooss 310f55a28e Light background on login box 2020-08-21 14:43:25 +02:00
Alexandre Iooss 51230e029d Better navbar buttons and less shadow 2020-08-21 14:21:26 +02:00
Rida Lali 2672721235 Add blocks with collapse animation instead of display all 2020-08-21 08:18:00 +02:00
Yohann D'ANELLO ba636fc401 Transfer from the Société générale is antedated 2020-08-21 07:40:27 +02:00
Yohann D'ANELLO c090b4af76 Superusers can see their note even if they have no membership for local dev 2020-08-20 23:13:27 +02:00
Pierre-antoine Comby a1dc8fe530 fix trailing comma 2020-08-19 23:00:49 +02:00
Pierre-antoine Comby 6ea92cdcde Merge branch 'documents' into beta 2020-08-19 13:18:12 +02:00
Pierre-antoine Comby 9c9214b5df [registration] comments 2020-08-19 13:03:36 +02:00
Pierre-antoine Comby 00935a8c02 [activity] comments on view and forms 2020-08-19 11:31:15 +02:00
Pierre-antoine Comby b0ebc7c0a4 mv imageForm 2020-08-19 11:30:56 +02:00
Pierre-antoine Comby 60b1cdbcf8 comments member views 2020-08-18 18:19:39 +02:00
Pierre-antoine Comby f324965f1a [note] comments view and templates 2020-08-18 14:27:04 +02:00
Yohann D'ANELLO 7c291b115a Ensure that date_end ≥ date_start in activities 2020-08-18 12:10:52 +02:00
Yohann D'ANELLO 6217f35f67 Notes are force-updated when a transaction is saved 2020-08-18 11:46:35 +02:00
Pierre-antoine Comby 448d379315 no need to disable turbolinks if we don't use select2 2020-08-18 11:45:30 +02:00
Yohann D'ANELLO e974eaa1fe Tuple (name, date_start, date_end) must be unique for activities 2020-08-17 19:28:26 +02:00
Yohann D'ANELLO 61ace4af74 Replace timezone.now().date() by date.today() 2020-08-16 00:36:34 +02:00
Yohann D'ANELLO b8c3dda95b Replace timezone.now().date() by date.today() 2020-08-16 00:35:13 +02:00
Yohann D'ANELLO da23df05cb Kfet members can edit their own WEI registration 2020-08-16 00:15:33 +02:00
Yohann D'ANELLO 9f258e39b6 Check that the user is a member of the parent club only at the creation of the membership 2020-08-15 23:52:57 +02:00
Yohann D'ANELLO 4997a37058 Ensure that the user is authenticated before that it has the permission to see page 2020-08-15 23:27:58 +02:00
Yohann D'ANELLO b16871d925 Display a form error rather than a page error if a guest is already invited 2020-08-15 23:03:49 +02:00
Yohann D'ANELLO 1186b0f9a9 Don't serialize *_ptr fields in logs 2020-08-15 22:54:16 +02:00
Yohann D'ANELLO 5abbb84254 Permissions for activities must be more specific to prevent that anyone can validate its own activity 2020-08-15 22:24:48 +02:00
Yohann D'ANELLO 5f8c4a2857 Prevent time travelers to register in the note 2020-08-15 21:30:08 +02:00
Yohann D'ANELLO 14b969b2dd Fix link in negative balances mails 2020-08-15 21:12:16 +02:00
Yohann D'ANELLO f95a0875db Fix link in negative balances mails 2020-08-15 21:11:02 +02:00
Yohann D'ANELLO 430036bfc2 Don't display "change password" button on other profile pages 2020-08-15 20:59:45 +02:00
Yohann D'ANELLO d6fd925fdd Display email and phone number in profile page 2020-08-15 20:40:11 +02:00
Yohann D'ANELLO 89c15cbe3e Refresh filters to search a transaction when a source or a destination is selected 2020-08-15 20:19:34 +02:00
Yohann D'ANELLO 75cd34f5dd Enlarge buttons table and transactions table 2020-08-15 20:04:19 +02:00
Yohann D'ANELLO 6927f5fbb6 Search buttons by category or description, highlight matched words 2020-08-15 19:47:29 +02:00
Yohann D'ANELLO 0bf5067b60 Fix linters 2020-08-15 19:10:23 +02:00
Yohann D'ANELLO fe2af5ac2b Pass resourcetype argument correctly when invalidating a transaction 2020-08-15 19:10:15 +02:00
Yohann D'ANELLO d4090a4043 🎉 Use select_for_update tag to update note balances when we save a Transaction to avoid concurrency issues 2020-08-15 18:57:44 +02:00
Yohann D'ANELLO 242b85676d Floats are already formatted 2020-08-14 19:37:17 +02:00
Yohann D'ANELLO eca4767155 Mark fields in TeX templates as safe 2020-08-14 19:35:21 +02:00
Yohann D'ANELLO 21ba46c1bc Don't escape numbers in TeX template 2020-08-14 19:16:51 +02:00
Yohann D'ANELLO 74097ecc44 "safe" template tag is not made for TeX templates, it replaces ' with ' but & is a special character 2020-08-14 19:13:24 +02:00
Yohann D'ANELLO d962763987 datetime.today() => date.today() 2020-08-14 19:04:44 +02:00
Yohann D'ANELLO a43abee00b Don't log database changes when we check a permission 2020-08-14 19:00:57 +02:00
Yohann D'ANELLO 912ce5da2e Fix the amount history in the button update page 2020-08-13 20:13:00 +02:00
Yohann D'ANELLO 29f8b9215d Fix the amount history in the button update page 2020-08-13 20:06:06 +02:00
Yohann D'ANELLO f5f379e6ad BooleanField -> CharField (a locale name is not a boolean) 2020-08-13 19:48:15 +02:00
Yohann D'ANELLO c50fdd6689 Move the mailing list registration to the Profile model, see #50 2020-08-13 19:43:37 +02:00
Yohann D'ANELLO 1e4cbf60c5 Display the full price of the WEI, including the BDE and the Kfet membership 2020-08-13 19:29:01 +02:00
Yohann D'ANELLO a25e663a26 Use datetime.today for DateField 2020-08-13 18:54:53 +02:00
Yohann D'ANELLO 721da093e9 Don't update membership information every time 2020-08-13 18:16:26 +02:00
Yohann D'ANELLO d98e46ffc2 Store note balances in a big integer 2020-08-13 18:04:28 +02:00
Yohann D'ANELLO 2d69e36adf Store only changed data in logs 2020-08-13 17:08:15 +02:00
Yohann D'ANELLO bb2704323a Spam click on invalidity button is no longer possible 2020-08-13 17:04:10 +02:00
Yohann D'ANELLO c466715e8a Raise permission denied on CreateView if you don't have the permission to create a sample instance, see #53 2020-08-13 15:20:15 +02:00
Yohann D'ANELLO 71f6436d06 More WEI tests, > 97 % coverage 2020-08-11 13:30:44 +02:00
Yohann D'ANELLO 106e97f5df Tests are better when they work (fix two tests) 2020-08-11 01:07:45 +02:00
Yohann D'ANELLO b7a88a387c More tests in WEI app, but we can still go further 2020-08-11 01:03:29 +02:00
Yohann D'ANELLO 25e26fe8cf Don't test LaTeX pages if LaTeX is not installed 2020-08-10 23:29:11 +02:00
Yohann D'ANELLO 0fae5b3e62 Create tests for the WEI app 2020-08-10 23:18:40 +02:00
Yohann D'ANELLO 3784e97d60 Hide the credit interface when editing a WEI registration 2020-08-10 20:09:49 +02:00
Yohann D'ANELLO 6567d2f8cc When an user is registering to the WEI, it doesn't pay the membership + the credit amount. The credit amount is deducted instead 2020-08-10 19:59:01 +02:00
Yohann D'ANELLO 999cc0a6b2 Tesdt login page 2020-08-10 19:36:04 +02:00
Yohann D'ANELLO 9c816a288d Stronger alias normalisation, ensure that normalized strings are encoded in ASCII. Closes #52 2020-08-10 18:36:47 +02:00
Alexandre Iooss 747a878cca Do not hover table when not clickable 2020-08-10 18:01:39 +02:00
Yohann D'ANELLO c612e159cf See user information does not imply see the note balance 2020-08-10 16:32:45 +02:00
Yohann D'ANELLO 1b84c8c603 🐛 The balance must be greater than the *total* amount of a transaction, not the unit price 2020-08-10 16:05:50 +02:00
Alexandre Iooss ccfc1e74ac Reorder import statements of apps/activity 2020-08-10 15:30:39 +02:00
Alexandre Iooss bba69f0a60 Give Pikachu as an example 2020-08-10 12:09:05 +02:00
Alexandre Iooss beff848796 Use a fixed-width container by default for lisibility 2020-08-10 12:08:47 +02:00
Alexandre Iooss e78ba49252 Override Django Registration templates 2020-08-10 12:08:21 +02:00
Alexandre Iooss ce35e8f7e8 Make the container customizable 2020-08-10 11:40:51 +02:00
Alexandre Iooss 50f4a43343 Custom CSS and card for login page 2020-08-10 11:31:35 +02:00
Alexandre Iooss f6dfbb0b6c Fix amount of \ in apps/activity/views.py 2020-08-09 19:49:11 +02:00
Alexandre Iooss c6e3a57801 Reorder import in apps/treasury/admin.py 2020-08-09 19:43:21 +02:00
Alexandre Iooss 40b826a375 Fix hanging indent in apps/note/tables.py 2020-08-09 19:42:09 +02:00
Alexandre Iooss f0089d0bc5 Remove unused django.template.loader.render_to_string import 2020-08-09 19:39:17 +02:00
Alexandre Iooss 5e75a56eda missing whitespace after ':' in apps/wei/forms/registration.py 2020-08-09 19:38:23 +02:00
Alexandre Iooss 7b40ee1ca4 Reorder templates 2020-08-09 19:06:57 +02:00
Yohann D'ANELLO 764eaafb95 Emails are unique. Translate mail foooters. Closes #55 #56 2020-08-09 16:38:37 +02:00
Yohann D'ANELLO 5846f03220 🐛 Last report date is a datetime, not a date 2020-08-09 15:53:50 +02:00
Yohann D'ANELLO 52e8b46aa2 🐛 Last report date is a datetime, not a date 2020-08-09 15:50:51 +02:00
Yohann D'ANELLO 29f84ea007 Remove test code 2020-08-09 15:42:07 +02:00
Yohann D'ANELLO 49bda926c6 Disable turbolinks for pages that require custom JS, like calendars or autocomplete fields 2020-08-09 15:31:38 +02:00
Yohann D'ANELLO 11fbbca2a8 Amount help text in transaction templates forms can be misleading: they type euros not cents 2020-08-09 14:52:57 +02:00
Yohann D'ANELLO 5f87e76be8 Fix Profile model in Django Admin 2020-08-09 13:42:37 +02:00
Yohann D'ANELLO 872456df20 🐛 Don't break the note 2020-08-09 12:31:06 +02:00
Pierre-antoine Comby 963ba05d01 🎨 set default birthday to 2001-01-01 2020-08-08 16:20:59 +02:00
Pierre-antoine Comby 18eaf4477e 🐛 timezone.now is a DateTime, not a Date 2020-08-08 15:30:33 +02:00
Yohann D'ANELLO e4998cb6e3 [WEI] Implement WEI Survey front 2020-08-07 20:11:28 +02:00
Yohann D'ANELLO ad59b5c81e Change help text in membership fields in club form 2020-08-07 14:20:34 +02:00
Yohann D'ANELLO 88917dde23 Some memberships were detected twice 2020-08-07 14:00:54 +02:00
Yohann D'ANELLO aab194b987 Import Société générale credits 2020-08-07 13:19:00 +02:00
Yohann D'ANELLO 9751a5ad92 🐛 Fix pagination in transaction page 2020-08-07 12:55:07 +02:00
Yohann D'ANELLO 679ac3a652 Lock invoices, delete them 2020-08-07 11:04:54 +02:00
Yohann D'ANELLO 1fb14ea33d Store invoice source code instead of generate it everytime 2020-08-06 22:30:14 +02:00
Yohann D'ANELLO e23eafd56c Add invoices in Django Admin 2020-08-06 21:51:53 +02:00
Yohann D'ANELLO 5c01c0bb6c Display 2 decimals in invoices 2020-08-06 21:02:25 +02:00
Yohann D'ANELLO 979628b02d 🐛 default last_report date is today, not the migration date 2020-08-06 20:30:17 +02:00
Yohann D'ANELLO fd2f426f55 🐛 Fix signup 2020-08-06 19:56:37 +02:00
Yohann D'ANELLO 48a7128370 📦 On a déménagé 2020-08-06 19:42:22 +02:00
Yohann D'ANELLO d95cd8c7c7 🎨 Better autocomplete field 2020-08-06 18:27:57 +02:00
Yohann D'ANELLO 5b3361f086 Product quantity must be positive 2020-08-06 18:05:58 +02:00
Yohann D'ANELLO 9c7cb07dec Improve activity interface 2020-08-06 17:41:30 +02:00
Yohann D'ANELLO dd4b24d999 Don't match users only with the start of the name 2020-08-06 15:21:16 +02:00
Yohann D'ANELLO eb3d426947 💩 Don't reset a transaction before saving it... 2020-08-06 15:18:14 +02:00
Yohann D'ANELLO d8c7018b9a FP is bugggy 2020-08-06 15:08:35 +02:00
Yohann D'ANELLO f47a0b8c9d Use neg for negative numbers in invoices 2020-08-06 14:41:14 +02:00
Yohann D'ANELLO c859fc7821 Use neg for negative numbers in invoices 2020-08-06 14:39:01 +02:00
Yohann D'ANELLO a4702fca86 Escape special TeX characters 2020-08-06 14:19:51 +02:00
Yohann D'ANELLO de5e0c958e Fix some activity errors 2020-08-06 14:11:55 +02:00